From fa2f172812de8344fa22c4ef088ea2a67257a0d3 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 05 九月 2023 10:21:17 +0800
Subject: [PATCH] Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/dmMes into dev
---
server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java | 139
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue | 419
minipro_standard/static/filter@2x.png | 0
minipro_standard/pages_adjust/pages/transferList/transferList.vue | 774 +
minipro_standard/components/LabelSelection.vue | 88
server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java | 36
minipro_standard/util/api/index.js | 26
minipro_standard/util/request/index.js | 10
server/src/main/resources/application-standardPro.yml | 1
minipro_standard/pages/linePatrol/linePatrol.vue | 225
minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue | 249
server/src/main/java/doumeemes/config/shiro/ShiroToken.java | 24
server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java | 2
minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue | 380
minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js | 1169 ++
minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss | 66
minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue | 4
minipro_standard/uni_modules/uni-icons/package.json | 86
minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss | 19
server/src/main/java/doumeemes/api/ext/CategoryExtController.java | 2
minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss | 24
h5_standard/src/views/children.vue | 1
minipro_standard/uni_modules/uni-scss/theme.scss | 31
server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java | 108
minipro_standard/pages/updatePhone/updatePhone.vue | 41
server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java | 45
server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java | 6
minipro_standard/pages/inspectComplete/inspectComplete.vue | 228
minipro_standard/pages_adjust/pages/outboundList/outboundList.vue | 562 +
server/README.md | 4
server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java | 5
server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java | 30
server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java | 121
server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java | 53
minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue | 562 +
minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss | 56
minipro_standard/components/workOrderInfo.vue | 82
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue | 324
minipro_standard/uni_modules/uni-collapse/readme.md | 12
minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss | 146
server/src/main/java/doumeemes/config/shiro/ShiroConfig.java | 46
minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png | 0
minipro_standard/util/api/ExWarehouse.js | 252
server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java | 9
minipro_standard/pages/personal/personal.vue | 20
minipro_standard/pages/allocation/allocation.vue | 269
minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue | 494
minipro_standard/util/api/PersonalAPI.js | 36
minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue | 147
minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss | 167
minipro_standard/pages_adjust/components/Material.vue | 131
minipro_standard/package-lock.json | 451
minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css | 663 +
minipro_standard/util/api/QualityAPI.js | 118
server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java | 43
minipro_standard/pages/login/login.vue | 65
minipro_standard/components/Tooling.vue | 144
minipro_standard/pages_adjust/pages/processPlan/processPlan.vue | 404
h5_standard/src/views/needToBeDealtWith/addWarehousing.vue | 3
minipro_standard/pages/OutOperation/OutOperation.vue | 685 +
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue | 1002 +
minipro_standard/static/ic_edit@2x.png | 0
minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss | 55
h5_standard/src/views/needToBeDealtWith/outbound.vue | 3
minipro_standard/util/utils.js | 30
server/src/main/java/doumeemes/config/shiro/ShiroCache.java | 72
minipro_standard/store/index.js | 105
minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue | 346
web_standard/src/api/business/salaryParam.js | 20
minipro_standard/util/api/materialStorage.js | 115
minipro_standard/uni_modules/uni-scss/styles/index.scss | 7
minipro_standard/pages/mine/mine.vue | 73
minipro_standard/uni_modules/uni-icons/readme.md | 8
h5_standard/src/views/needToBeDealtWith/exWarehouse.vue | 2051 ++-
minipro_standard/pages/plannedProgress/plannedProgress.vue | 632 +
minipro_standard/uni.scss | 12
minipro_standard/pages/planDetails/planDetails.vue | 546 +
minipro_standard/package.json | 5
minipro_standard/pages/changePassword/changePassword.vue | 35
minipro_standard/pages_adjust/components/Warehouse.vue | 136
minipro_standard/pages/plannedDistribution/plannedDistribution.vue | 609 +
minipro_standard/manifest.json | 8
minipro_standard/util/api/PlanningAPI.js | 213
server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java | 111
server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java | 7
server/src/main/java/doumeemes/config/shiro/ShiroRealm.java | 25
minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue | 485
server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java | 27
minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue | 462
minipro_standard/util/request/requestInterceptors.js | 23
minipro_standard/uni_modules/uni-scss/readme.md | 4
h5_standard/src/views/workOrder/workOrderReporting.vue | 3764 +++---
web_standard/public/template/material_import_template.xlsx | 0
minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue | 96
minipro_standard/components/SelectMultipleMaterial.vue | 274
server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java | 86
h5_standard/src/views/requisition/scrapped.vue | 3
server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java | 24
minipro_standard/main.js | 1
server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java | 4
platform_web/src/views/system/loginLog.vue | 18
server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java | 21
minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf | 0
minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue | 331
minipro_standard/uni_modules/uni-collapse/changelog.md | 36
minipro_standard/uni_modules/uni-scss/index.scss | 1
minipro_standard/pages_adjust/components/user.vue | 127
h5_standard/src/utils/request.ts | 4
server/src/main/java/doumeemes/core/utils/WxMiniConfig.java | 5
minipro_standard/util/request/responseInterceptors.js | 47
minipro_standard/components/selectMaterial.vue | 140
server/src/main/resources/application.yml | 5
minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue | 402
minipro_standard/pages_adjust/components/location.vue | 101
minipro_standard/uni_modules/uni-collapse/package.json | 89
web_standard/.env.development | 4
minipro_standard/pages/InOperation/InOperation.vue | 686 +
minipro_standard/common/css/common.css | 8
server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java | 3
minipro_standard/pages/index/index.vue | 374
h5_standard/src/components/common/Access.vue | 551
minipro_standard/pages.json | 209
minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue | 643 +
server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java | 172
minipro_standard/pages_adjust/components/ProductionProcess.vue | 111
minipro_standard/uni_modules/uni-scss/variables.scss | 62
server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java | 2
server/src/main/java/doumeemes/api/system/SystemLoginLogController.java | 3
server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java | 4
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue | 996 +
minipro_standard/pages/workbench/workbench.vue | 15
minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue | 330
server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java | 182
minipro_standard/common/config.js | 33
server/src/main/java/doumeemes/api/ext/DeviceExtController.java | 4
minipro_standard/components/InOutInfo.vue | 82
minipro_standard/App.vue | 1
minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue | 1071 ++
minipro_standard/uni_modules/uni-scss/changelog.md | 8
h5_standard/.env.development | 2
minipro_standard/uni_modules/uni-icons/changelog.md | 22
minipro_standard/util/api/agencyAPI.js | 77
platform_web/.env.development | 4
server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java | 2
minipro_standard/common/css/lib.css | 39
minipro_standard/util/constData.js | 145
minipro_standard/util/api/WorkOrderAPI.js | 652 +
minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss | 3
minipro_standard/uni_modules/uni-scss/package.json | 82
minipro_standard/components/Search.vue | 181
minipro_standard/pages/inspectPatrol/inspectPatrol.vue | 227
151 files changed, 26,714 insertions(+), 3,389 deletions(-)
diff --git a/h5_standard/.env.development b/h5_standard/.env.development
index 3621622..5b5d10a 100644
--- a/h5_standard/.env.development
+++ b/h5_standard/.env.development
@@ -10,7 +10,7 @@
# VUE_APP_API = 'https://106.14.220.133:10012/'
# 钀嶅鏈湴
-# VUE_APP_API = 'http://192.168.0.12:10012/'
+# VUE_APP_API = 'http://192.168.3.219:10021/'
# 浠诲悍鏈湴
# VUE_APP_API = 'http://192.168.0.15:10021/'
diff --git a/h5_standard/src/components/common/Access.vue b/h5_standard/src/components/common/Access.vue
index ef366c6..4d923a0 100644
--- a/h5_standard/src/components/common/Access.vue
+++ b/h5_standard/src/components/common/Access.vue
@@ -1,299 +1,308 @@
<template>
- <van-popup
- v-model:show="props.show"
- position="bottom"
- :style="{ height: '100%' }">
- <div class="title">
- <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
- </div>
- <div class="content">
- <!-- <div :class="{ 'content_top': status }" class="content_search">
+ <van-popup v-model:show="props.show" position="bottom" :style="{ height: '100%' }">
+ <div class="title">
+ <div class="close" @click="close"><van-icon name="arrow-down" size="30" color="#ffffff" /></div>
+ </div>
+ <div class="content">
+ <!-- <div :class="{ 'content_top': status }" class="content_search">
<v-Search ref="V" @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储宸ヨ缂栫爜"></v-Search>
</div>
<div class="content_total">鍏眥{form.total}}鏉℃暟鎹�</div> -->
- <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
- <van-list
- v-model:loading="loading"
- :finished="finished"
- finished-text="娌℃湁鏇村浜唦"
- @load="onLoad">
- <div class="content_list">
- <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item, i)">
- <div class="wl">
- <div class="content_list_item_name">{{item.locationName}}</div>
- <!-- <div class="content_list_item_status green" v-if="item.smodelLabel === Attribute.HG">[{{item.smodelCode}}]</div>
+ <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+ <van-list v-model:loading="loading" :finished="finished" finished-text="娌℃湁鏇村浜唦" @load="onLoad">
+ <div class="content_list">
+ <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item, i)">
+ <div class="wl">
+ <div class="content_list_item_name">{{ item.locationName }}</div>
+ <!-- <div class="content_list_item_status green" v-if="item.smodelLabel === Attribute.HG">[{{item.smodelCode}}]</div>
<div class="content_list_item_status yellow" v-else-if="item.smodelLabel === Attribute.BL">[{{item.smodelCode}}]</div>
<div class="content_list_item_status red" v-else-if="item.smodelLabel === Attribute.BF">[{{item.smodelCode}}]</div>
<div class="content_list_item_status black" v-else-if="item.smodelLabel === Attribute.HH">[{{item.smodelCode}}]</div>
<div class="content_list_item_name">{{item.categoryBigName ? item.categoryBigName : ''}}{{item.categoryMiddleName ? item.categoryMiddleName : ''}}{{item.categorySmallName ? item.categorySmallName : ''}}-{{item.code}}</div> -->
- </div>
- <div class="sx">
- <span>{{item.materialName ? item.materialName : '-'}} | {{item.materialCode ? item.materialCode : '-'}} | {{item.num}}{{item.umodelName}}</span>
- </div>
- <div class="zl">
- <span>
- <span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
- <span class="yellow" v-if="item.qualityType == 1">涓嶈壇</span>
- <span class="red" v-if="item.qualityType == 2">鎶ュ簾</span>
- / {{item.pmodelName ? item.pmodelName : '-'}} / {{item.batch ? item.batch : '-'}}
- </span>
- </div>
- </div>
- </div>
- </van-list>
- </van-pull-refresh>
- </div>
- </van-popup>
+ </div>
+ <div class="sx">
+ <span>{{ item.materialName ? item.materialName : '-' }} | {{ item.materialCode ? item.materialCode : '-' }} |
+ {{ item.num }}{{ item.umodelName }}</span>
+ </div>
+ <div class="zl">
+ <span>
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
+ <span class="yellow" v-if="item.qualityType == 1">涓嶈壇</span>
+ <span class="red" v-if="item.qualityType == 2">鎶ュ簾</span>
+ / {{ item.pmodelName ? item.pmodelName : '-' }} / {{ item.batch ? item.batch : '-' }}
+ </span>
+ </div>
+ </div>
+ </div>
+ </van-list>
+ </van-pull-refresh>
+ </div>
+ </van-popup>
</template>
<script lang="ts" setup>
- import { defineProps, defineEmits, onMounted, ref, reactive, watch } from 'vue'
- import { checkAllList, toolingList } from '@/apis/WorkOrderAPI'
- // import { findListPageForManual } from '@/apis/agencyAPI'
- import { choiceStockPageByTransfer } from '@/apis/ExWarehouse'
- import { model } from '@/interface'
- import { Attribute } from '@/enum'
- import { judgmentPlatform } from "@/utils/utils"
- import vSearch from '@/components/common/Search.vue'
- import vLableSelection from '@/components/common/LabelSelection.vue'
+import { defineProps, defineEmits, onMounted, ref, reactive, watch } from 'vue'
+import { checkAllList, toolingList } from '@/apis/WorkOrderAPI'
+// import { findListPageForManual } from '@/apis/agencyAPI'
+import { choiceStockPageByTransfer } from '@/apis/ExWarehouse'
+import { model } from '@/interface'
+import { Attribute } from '@/enum'
+import { judgmentPlatform } from "@/utils/utils"
+import vSearch from '@/components/common/Search.vue'
+import vLableSelection from '@/components/common/LabelSelection.vue'
- // 鎼滅储鏁版嵁鎺ュ彛
- interface form extends model {
- total: number,
- smodelLabel: string,
- categoryId: string
- }
+// 鎼滅储鏁版嵁鎺ュ彛
+interface form extends model {
+ total: number,
+ smodelLabel: string,
+ categoryId: string
+}
- const form = reactive<form>({
- capacity: 50,
- page: 0,
- total: 0,
- smodelLabel: '',
- categoryId: ''
- })
+const form = reactive<form>({
+ capacity: 50,
+ page: 0,
+ total: 0,
+ smodelLabel: '',
+ categoryId: ''
+})
- // 鍒楄〃鏁版嵁
- const list: any = ref([]);
- const loading = ref(false);
- const finished = ref(false);
- const refreshing = ref(false)
- let isOne = ref<boolean>(true)
- // const V = ref(null)
- let isOpen = ref<boolean>(true)
+// 鍒楄〃鏁版嵁
+const list: any = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const refreshing = ref(false)
+let isOne = ref<boolean>(true)
+// const V = ref(null)
+let isOpen = ref<boolean>(true)
- const test = () => {
- // const { text }: any = V.value
- form.smodelLabel = ''
- // V.value.text = ''
- }
+const test = () => {
+ // const { text }: any = V.value
+ form.smodelLabel = ''
+ // V.value.text = ''
+}
- const clickTag = (tag: string): void => {
- form.categoryId = tag
+const clickTag = (tag: string): void => {
+ form.categoryId = tag
+ list.value = []
+ finished.value = false
+ form.page = 0
+ form.total = 0
+ onLoad()
+}
+
+// 鎼滅储妗�
+const searchInput = (data: any) => {
+ console.log(data)
+ form.page = 0
+ finished.value = false
+ list.value = []
+ form.smodelLabel = data
+ onLoad()
+}
+
+// 鎼滅储鎻愪氦
+const submit = (): void => {
+ form.page = 0
+ finished.value = false
+ list.value = []
+ onLoad()
+}
+
+// 杩斿洖涓婁竴椤靛甫鍙傛暟
+const jump = (item: any, i: number): void => {
+ list.value.splice(i, 1)
+ emit('value', item, list.value.length)
+}
+
+// 鑾峰彇宸ュ崟鍒楄〃鏁版嵁
+const onLoad = async () => {
+ // if (isOne.value) await checkAllLists()
+ if (!finished.value) {
+ loading.value = true;
+ form.page = form.page + 1
+ choiceStockPageByTransfer({
+ capacity: form.capacity,
+ page: form.page,
+ model: {
+ transferId: props.transferId,
+ warehouseId: props.warehouseId
+ }
+ }).then(res => {
+ if (refreshing.value) {
list.value = []
- finished.value = false
- form.page = 0
- form.total = 0
- onLoad()
- }
-
- // 鎼滅储妗�
- const searchInput = (data: any) => {
- console.log(data)
- form.page = 0
- finished.value = false
+ refreshing.value = false;
+ }
+ loading.value = false;
+ if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
+ form.total = res.data.total
+ list.value.push(...res.data.records)
+ } else {
+ finished.value = true;
+ }
+ }).catch((err: any) => {
+ loading.value = false;
+ finished.value = true;
+ if (refreshing.value) {
list.value = []
- form.smodelLabel = data
- onLoad()
- }
-
- // 鎼滅储鎻愪氦
- const submit = (): void => {
- form.page = 0
- finished.value = false
- list.value = []
- onLoad()
- }
-
- // 杩斿洖涓婁竴椤靛甫鍙傛暟
- const jump = (item: any, i: number): void => {
- list.value.splice(i, 1)
- emit('value', item, list.value.length)
- }
-
- // 鑾峰彇宸ュ崟鍒楄〃鏁版嵁
- const onLoad = async () => {
- // if (isOne.value) await checkAllLists()
- if (!finished.value) {
- loading.value = true;
- form.page = form.page + 1
- choiceStockPageByTransfer({
- capacity: form.capacity,
- page: form.page,
- model: {
- transferId: props.transferId,
- warehouseId: props.warehouseId
- }
- }).then(res => {
- if (refreshing.value) {
- list.value = []
- refreshing.value = false;
- }
- loading.value = false;
- if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
- form.total = res.data.total
- list.value.push(...res.data.records)
- } else {
- finished.value = true;
- }
- }).catch((err: any) => {
- loading.value = false;
- finished.value = true;
- if (refreshing.value) {
- list.value = []
- refreshing.value = false;
- }
- })
- }
- }
-
- // 涓嬫媺鍒锋柊浼樺寲椤甸潰
- const onRefresh = () => {
- finished.value = false;
- form.page = 0
- loading.value = true;
- onLoad()
- }
-
- let status = ref<boolean>(false)
-
- const props = defineProps({
- show: { // 鏄惁鏄剧ず
- type: Boolean,
- required: true
- },
- transferId: { // 杞簱鍗昳d
- type: String,
- required: false
- },
- warehouseId: { // 浠撳簱缂栫爜
- type: String,
- required: false
- }
+ refreshing.value = false;
+ }
})
+ }
+}
- const emit = defineEmits(['close', 'value'])
+// 涓嬫媺鍒锋柊浼樺寲椤甸潰
+const onRefresh = () => {
+ finished.value = false;
+ form.page = 0
+ loading.value = true;
+ onLoad()
+}
- // 鍏抽棴鍥炶皟
- const close = () => {
- emit('close')
+let status = ref<boolean>(false)
+
+const props = defineProps({
+ show: { // 鏄惁鏄剧ず
+ type: Boolean,
+ required: true
+ },
+ transferId: { // 杞簱鍗昳d
+ type: String,
+ required: false
+ },
+ warehouseId: { // 浠撳簱缂栫爜
+ type: String,
+ required: false
+ }
+})
+
+const emit = defineEmits(['close', 'value'])
+
+// 鍏抽棴鍥炶皟
+const close = () => {
+ emit('close')
+}
+
+watch(() => props.show, (news) => {
+ if (!news) {
+ test()
+ } else {
+ if (!isOpen.value) {
+ list.value = []
+ finished.value = false;
+ form.page = 0
+ loading.value = true;
+ onLoad()
}
+ isOpen.value = false
+ }
+})
- watch(() => props.show, (news) => {
- if (!news) {
- test()
- } else {
- if (!isOpen.value) {
- list.value = []
- finished.value = false;
- form.page = 0
- loading.value = true;
- onLoad()
- }
- isOpen.value = false
- }
- })
-
- onMounted(() => {
- status.value = judgmentPlatform()
- })
+onMounted(() => {
+ status.value = judgmentPlatform()
+})
</script>
<style lang="scss" scoped>
- .title {
- position: fixed;
- right: 50px;
- bottom: 100px;
- z-index: 9;
- .close {
- width: 80px;
- height: 80px;
- border-radius: 50%;
- background: #999999;
- display: flex;
- align-items: center;
- justify-content: center;
- }
+.title {
+ position: fixed;
+ right: 50px;
+ bottom: 100px;
+ z-index: 9;
+
+ .close {
+ width: 80px;
+ height: 80px;
+ border-radius: 50%;
+ background: #999999;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+}
+
+.content {
+ .content_code {
+ position: fixed;
+ right: 30px;
+ bottom: 100px;
+
+ img {
+ width: 138px;
+ height: 138px;
}
- .content {
- .content_code {
- position: fixed;
- right: 30px;
- bottom: 100px;
- img {
- width: 138px;
- height: 138px;
- }
- }
- .content_top {
- top: 0 !important;
- }
- .content_search {
- padding: 30px;
- background: white;
- position: sticky;
- top: 88px;
- z-index: 9;
- .content_search_x {
- height: 24px;
- }
- }
- .content_total {
- padding: 24px 30px;
- background: #F7F7F7;
- font-size: 24px;
- font-weight: 400;
- color: #666666;
- }
- .content_list {
- width: 100%;
- height: 100%;
- display: flex;
- flex-direction: column;
- .content_list_item {
- padding: 30px;
- display: flex;
- flex-direction: column;
- border-bottom: 1px solid #ececec;
- .wl {
- display: flex;
- align-items: center;
- .content_list_item_status {
- font-size: 28px;
- margin-right: 10px;
- }
- .content_list_item_name {
- font-size: 30px;
- font-weight: 500;
- color: #111111;
- }
- }
- .sx {
- margin-top: 15px;
- span {
- font-size: 26px;
- font-weight: 400;
- color: #444444;
- }
- }
- .zl {
- margin-top: 15px;
- span {
- font-size: 24px;
- font-weight: 400;
- color: #666666;
- }
- }
- }
- }
+ }
+
+ .content_top {
+ top: 0 !important;
+ }
+
+ .content_search {
+ padding: 30px;
+ background: white;
+ position: sticky;
+ top: 88px;
+ z-index: 9;
+
+ .content_search_x {
+ height: 24px;
}
-</style>
+ }
+
+ .content_total {
+ padding: 24px 30px;
+ background: #F7F7F7;
+ font-size: 24px;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .content_list {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+
+ .content_list_item {
+ padding: 30px;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1px solid #ececec;
+
+ .wl {
+ display: flex;
+ align-items: center;
+
+ .content_list_item_status {
+ font-size: 28px;
+ margin-right: 10px;
+ }
+
+ .content_list_item_name {
+ font-size: 30px;
+ font-weight: 500;
+ color: #111111;
+ }
+ }
+
+ .sx {
+ margin-top: 15px;
+
+ span {
+ font-size: 26px;
+ font-weight: 400;
+ color: #444444;
+ }
+ }
+
+ .zl {
+ margin-top: 15px;
+
+ span {
+ font-size: 24px;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+ }
+ }
+}</style>
diff --git a/h5_standard/src/utils/request.ts b/h5_standard/src/utils/request.ts
index 06d7b67..d51170a 100644
--- a/h5_standard/src/utils/request.ts
+++ b/h5_standard/src/utils/request.ts
@@ -29,9 +29,9 @@
// 娣诲姞鍝嶅簲鎷︽埅鍣�
service.interceptors.response.use(
(response) => {
- // if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) {
+ if (response.config.url?.indexOf('/lingyang/login') == -1 && response.config.url?.indexOf('/edgp/loginDemo') == -1 && response.config.url?.indexOf('/lingyang/loginDemo') == -1 && response.config.url?.indexOf('/edgp/login') == -1) {
loading.clear();
- // }
+ }
if (response.data.code === 401) { // 澶勭悊鐧诲綍杩囨湡
Toast.fail({ message: '鐧诲綍杩囨湡锛屽噯澶囪嚜鍔ㄩ噸鏂扮櫥褰�', duration: 2000, forbidClick: true })
setTimeout(() => {
diff --git a/h5_standard/src/views/children.vue b/h5_standard/src/views/children.vue
index bd66219..d03ea27 100644
--- a/h5_standard/src/views/children.vue
+++ b/h5_standard/src/views/children.vue
@@ -36,6 +36,7 @@
const title = ref<string>('')
+ // alert(window.document.title)
const pathLists = reactive<string[]>([
'/index',
'/workbench',
diff --git a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
index 3ab6379..1d9ab0b 100644
--- a/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
+++ b/h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
@@ -272,7 +272,8 @@
// 鍒犻櫎
const dele = (index: any) => {
if (list.value.length === 1) {
- Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ // Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�')
return
}
list.value.splice(index, 1)
diff --git a/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue b/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
index d9a065f..cdca4bd 100644
--- a/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
+++ b/h5_standard/src/views/needToBeDealtWith/exWarehouse.vue
@@ -1,185 +1,185 @@
<template>
- <div class="page">
- <!-- 澶撮儴淇℃伅(杞簱鍗�) -->
- <div class="page_info" v-if="info.wtransfer && route.query.type == 7">
- <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{info.wtransfer.outPlandate}}</div>
- <div class="page_info_list">
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
- <div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">閲囪喘璁㈠崟</div>
- <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">鐢熶骇宸ュ崟</div>
- <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">閿�鍞鍗�</div>
- <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">杞簱鍗�</div>
- <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">鐩樼偣鍗�</div>
- <div class="page_info_list_item_nr" v-else>-</div>
- </div>
-<!-- <div class="page_info_list_item">-->
-<!-- <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
-<!-- <div class="page_info_list_item_nr">{{info.wtransfer.procedureName ? info.wtransfer.procedureName : '-'}}</div>-->
-<!-- </div>-->
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
- <div class="page_info_list_item_nr">{{info.wtransfer.originCode ? info.wtransfer.originCode : '-'}}</div>
- </div>
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
- <div class="page_info_list_item_nr">{{info.wtransfer.outUserName}}/{{info.wtransfer.outDepartName}}</div>
- </div>
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鍏ュ簱鎺ユ敹浜猴細</div>
- <div class="page_info_list_item_nr">{{info.wtransfer.inUserName}}</div>
- </div>
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
- <div class="page_info_list_item_nr">{{info.wtransfer.createTime ? info.wtransfer.createTime : '-'}}</div>
- </div>
- </div>
- <div class="page_info_bz" v-if="info.wtransfer.abstracts">
- <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
- <div class="page_info_bz_nr">{{info.wtransfer.abstracts}}</div>
- </div>
+ <div class="page">
+ <!-- 澶撮儴淇℃伅(杞簱鍗�) -->
+ <div class="page_info" v-if="info.wtransfer && route.query.type == 7">
+ <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{ info.wtransfer.outPlandate }}</div>
+ <div class="page_info_list">
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
+ <div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">閲囪喘璁㈠崟</div>
+ <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">鐢熶骇宸ュ崟</div>
+ <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">閿�鍞鍗�</div>
+ <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">杞簱鍗�</div>
+ <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">鐩樼偣鍗�</div>
+ <div class="page_info_list_item_nr" v-else>-</div>
</div>
- <!-- 澶撮儴淇℃伅(鍑哄簱鍗�) -->
- <div class="page_info" v-if="info.woutbound && route.query.type == 8">
- <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{info.woutbound.planDate}}</div>
- <div class="page_info_list">
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
- <div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">閲囪喘璁㈠崟</div>
- <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">鐢熶骇宸ュ崟</div>
- <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">閿�鍞鍗�</div>
- <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">杞簱鍗�</div>
- <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">鐩樼偣鍗�</div>
- <div class="page_info_list_item_nr" v-else>-</div>
- </div>
-<!-- <div class="page_info_list_item">-->
-<!-- <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
-<!-- <div class="page_info_list_item_nr">{{info.woutbound.procedureName ? info.woutbound.procedureName : '-'}}</div>-->
-<!-- </div>-->
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
- <div class="page_info_list_item_nr">{{info.woutbound.originCode ? info.woutbound.originCode : '-'}}</div>
- </div>
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
- <div class="page_info_list_item_nr">{{info.woutbound.userName}}/{{info.woutbound.userDepartName}}</div>
- </div>
- <div class="page_info_list_item">
- <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
- <div class="page_info_list_item_nr">{{info.woutbound.createTime ? info.woutbound.createTime : '-'}}</div>
- </div>
- </div>
- <div class="page_info_bz" v-if="info.woutbound.abstracts">
- <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
- <div class="page_info_bz_nr">{{info.woutbound.abstracts}}</div>
- </div>
+ <!-- <div class="page_info_list_item">-->
+ <!-- <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
+ <!-- <div class="page_info_list_item_nr">{{info.wtransfer.procedureName ? info.wtransfer.procedureName : '-'}}</div>-->
+ <!-- </div>-->
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
+ <div class="page_info_list_item_nr">{{ info.wtransfer.originCode ? info.wtransfer.originCode : '-' }}</div>
</div>
- <div class="page_h"></div>
- <!-- 鎵撳紑閫夋嫨宸ヨ -->
-<!-- <div class="switch" v-if="type === QRCodeType.ZKD.toString()">-->
-<!-- <button @click="openxz"><img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="">鎵嬪姩閫夋嫨</button>-->
-<!-- </div>-->
-<!-- <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>-->
- <!-- 寰呭嚭鐗╂枡 -->
- <van-collapse v-model="activeNames">
- <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
- <template v-if="route.query.type == 7">
- <van-collapse-item :name="String(index + 1 )" v-for="(item, index) in info.wtransferWarehouseList" :key="index">
- <template #title>
- <div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{item.warehouseName}}</div>
- </template>
- <div class="page_dck">
- <div class="page_dck_title">
- <div class="page_dck_title_x"></div>
- <span>寰呭嚭搴撶墿鏂�</span>
- </div>
- </div>
- <div class="page_content" v-for="(items, idx) in item.wtransferDetailList" :key="idx">
- <div class="page_content_title">
- <div class="page_content_title_top">
- <span>{{items.materialName}} | {{items.materialCode}}</span>
- <span>寰呭嚭 <span>{{items.outPlannum}}</span> {{items.unitName}}</span>
- </div>
- <div class="page_content_title_bottom">
- <span class="green" v-if="items.qualityType === 0">鍚堟牸 / </span>
- <span class="warning" v-else-if="items.qualityType === 1">涓嶈壇 / </span>
- <span class="error" v-else-if="items.qualityType === 2">鎶ュ簾 / </span>
- <span v-else>- / </span>
- <span>{{items.procedureName ? items.procedureName : '-'}} / </span>
- <span>{{items.batch ? items.batch : '-'}}</span>
- </div>
- </div>
- <div class="page_content_list" v-for="(childer, idxs) in items.wstockExtListVOList" :key="idxs">
- <div class="page_content_list_item">
- <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
- <div class="page_content_list_item_nr">{{childer.locationName}}</div>
- </div>
- <div class="page_content_list_items">
- <div class="page_content_list_item_label">鏁伴噺锛�</div>
- <div class="page_content_list_item_nr">{{childer.num}}{{childer.unitName}}</div>
- </div>
- <div class="page_content_list_item">
- <div class="page_content_list_item_label">鎵规鍙凤細</div>
- <div class="page_content_list_item_nr">{{childer.batch ? childer.batch : '-'}}</div>
- </div>
- </div>
- </div>
- </van-collapse-item>
- </template>
- <!-- 鍑哄簱鍗曪紙涓�涓粨搴擄級 -->
- <template v-if="route.query.type == 8">
- <van-collapse-item name="1">
- <template #title>
- <div class="page_sfq" v-if="info.woutbound">
- <img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{info.woutbound.warehouseName}}
- </div>
- </template>
- <div class="page_dck">
- <div class="page_dck_title">
- <div class="page_dck_title_x"></div>
- <span>寰呭嚭搴撶墿鏂�</span>
- </div>
- </div>
- <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index">
- <div class="page_content_title">
-<!-- <span>{{item.materialName}} | {{item.materialCode}}</span>-->
-<!-- <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>-->
- <div class="page_content_title_top">
- <span>{{item.materialName}} | {{item.materialCode}}</span>
- <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>
- </div>
- <div class="page_content_title_bottom">
- <span class="green" v-if="item.qualityType === 0">鍚堟牸 / </span>
- <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 / </span>
- <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾 / </span>
- <span v-else>- / </span>
- <span>{{item.procedureName ? item.procedureName : '-'}} / </span>
- <span>{{item.batch ? item.batch : '-'}}</span>
- </div>
- </div>
- <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
- <div class="page_content_list_item">
- <div class="page_content_list_item_label">鎵规鍙凤細</div>
- <div class="page_content_list_item_nr">{{items.batch ? items.batch : '-'}}</div>
- </div>
- <div class="page_content_list_items">
- <div class="page_content_list_item_label">鏁伴噺锛�</div>
- <div class="page_content_list_item_nr">{{items.num}}{{items.umodel.name}}</div>
- </div>
- <div class="page_content_list_item" v-if="items.lmodel">
- <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
- <div class="page_content_list_item_nr">{{items.lmodel.unionName}}</div>
- </div>
- </div>
- </div>
- </van-collapse-item>
- </template>
- </van-collapse>
- <div class="page_h"></div>
- <!-- 宸查�夌墿鏂� -->
- <div class="page_yxwl">
- <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
- <!-- <template v-if="route.query.type == 7">
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
+ <div class="page_info_list_item_nr">{{ info.wtransfer.outUserName }}/{{ info.wtransfer.outDepartName }}</div>
+ </div>
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鍏ュ簱鎺ユ敹浜猴細</div>
+ <div class="page_info_list_item_nr">{{ info.wtransfer.inUserName }}</div>
+ </div>
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
+ <div class="page_info_list_item_nr">{{ info.wtransfer.createTime ? info.wtransfer.createTime : '-' }}</div>
+ </div>
+ </div>
+ <div class="page_info_bz" v-if="info.wtransfer.abstracts">
+ <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
+ <div class="page_info_bz_nr">{{ info.wtransfer.abstracts }}</div>
+ </div>
+ </div>
+ <!-- 澶撮儴淇℃伅(鍑哄簱鍗�) -->
+ <div class="page_info" v-if="info.woutbound && route.query.type == 8">
+ <div class="page_info_title">璁″垝鍑哄簱鏃ユ湡锛歿{ info.woutbound.planDate }}</div>
+ <div class="page_info_list">
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鏉ユ簮绫诲瀷锛�</div>
+ <div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">閲囪喘璁㈠崟</div>
+ <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">鐢熶骇宸ュ崟</div>
+ <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">閿�鍞鍗�</div>
+ <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">杞簱鍗�</div>
+ <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">鐩樼偣鍗�</div>
+ <div class="page_info_list_item_nr" v-else>-</div>
+ </div>
+ <!-- <div class="page_info_list_item">-->
+ <!-- <div class="page_info_list_item_label">鐢抽宸ュ簭锛�</div>-->
+ <!-- <div class="page_info_list_item_nr">{{info.woutbound.procedureName ? info.woutbound.procedureName : '-'}}</div>-->
+ <!-- </div>-->
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鏉ユ簮鍗曞彿锛�</div>
+ <div class="page_info_list_item_nr">{{ info.woutbound.originCode ? info.woutbound.originCode : '-' }}</div>
+ </div>
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鐢宠浜哄憳锛�</div>
+ <div class="page_info_list_item_nr">{{ info.woutbound.userName }}/{{ info.woutbound.userDepartName }}</div>
+ </div>
+ <div class="page_info_list_item">
+ <div class="page_info_list_item_label">鐢宠鏃堕棿锛�</div>
+ <div class="page_info_list_item_nr">{{ info.woutbound.createTime ? info.woutbound.createTime : '-' }}</div>
+ </div>
+ </div>
+ <div class="page_info_bz" v-if="info.woutbound.abstracts">
+ <div class="page_info_bz_title">杞簱澶囨敞锛�</div>
+ <div class="page_info_bz_nr">{{ info.woutbound.abstracts }}</div>
+ </div>
+ </div>
+ <div class="page_h"></div>
+ <!-- 鎵撳紑閫夋嫨宸ヨ -->
+ <!-- <div class="switch" v-if="type === QRCodeType.ZKD.toString()">-->
+ <!-- <button @click="openxz"><img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="">鎵嬪姩閫夋嫨</button>-->
+ <!-- </div>-->
+ <!-- <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>-->
+ <!-- 寰呭嚭鐗╂枡 -->
+ <van-collapse v-model="activeNames">
+ <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
+ <template v-if="route.query.type == 7">
+ <van-collapse-item :name="String(index + 1)" v-for="(item, index) in info.wtransferWarehouseList" :key="index">
+ <template #title>
+ <div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ item.warehouseName }}</div>
+ </template>
+ <div class="page_dck">
+ <div class="page_dck_title">
+ <div class="page_dck_title_x"></div>
+ <span>寰呭嚭搴撶墿鏂�</span>
+ </div>
+ </div>
+ <div class="page_content" v-for="(items, idx) in item.wtransferDetailList" :key="idx">
+ <div class="page_content_title">
+ <div class="page_content_title_top">
+ <span>{{ items.materialName }} | {{ items.materialCode }}</span>
+ <span>寰呭嚭 <span>{{ items.outPlannum }}</span> {{ items.unitName }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="items.qualityType === 0">鍚堟牸 / </span>
+ <span class="warning" v-else-if="items.qualityType === 1">涓嶈壇 / </span>
+ <span class="error" v-else-if="items.qualityType === 2">鎶ュ簾 / </span>
+ <span v-else>- / </span>
+ <span>{{ items.procedureName ? items.procedureName : '-' }} / </span>
+ <span>{{ items.batch ? items.batch : '-' }}</span>
+ </div>
+ </div>
+ <div class="page_content_list" v-for="(childer, idxs) in items.wstockExtListVOList" :key="idxs">
+ <div class="page_content_list_item">
+ <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+ <div class="page_content_list_item_nr">{{ childer.locationName }}</div>
+ </div>
+ <div class="page_content_list_items">
+ <div class="page_content_list_item_label">鏁伴噺锛�</div>
+ <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
+ </div>
+ <div class="page_content_list_item">
+ <div class="page_content_list_item_label">鎵规鍙凤細</div>
+ <div class="page_content_list_item_nr">{{ childer.batch ? childer.batch : '-' }}</div>
+ </div>
+ </div>
+ </div>
+ </van-collapse-item>
+ </template>
+ <!-- 鍑哄簱鍗曪紙涓�涓粨搴擄級 -->
+ <template v-if="route.query.type == 8">
+ <van-collapse-item name="1">
+ <template #title>
+ <div class="page_sfq" v-if="info.woutbound">
+ <img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ info.woutbound.warehouseName }}
+ </div>
+ </template>
+ <div class="page_dck">
+ <div class="page_dck_title">
+ <div class="page_dck_title_x"></div>
+ <span>寰呭嚭搴撶墿鏂�</span>
+ </div>
+ </div>
+ <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index">
+ <div class="page_content_title">
+ <!-- <span>{{item.materialName}} | {{item.materialCode}}</span>-->
+ <!-- <span>寰呭嚭 <span>{{item.num}}</span> {{item.unitName}}</span>-->
+ <div class="page_content_title_top">
+ <span>{{ item.materialName }} | {{ item.materialCode }}</span>
+ <span>寰呭嚭 <span>{{ item.num }}</span> {{ item.unitName }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="item.qualityType === 0">鍚堟牸 / </span>
+ <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 / </span>
+ <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾 / </span>
+ <span v-else>- / </span>
+ <span>{{ item.procedureName ? item.procedureName : '-' }} / </span>
+ <span>{{ item.batch ? item.batch : '-' }}</span>
+ </div>
+ </div>
+ <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
+ <div class="page_content_list_item">
+ <div class="page_content_list_item_label">鎵规鍙凤細</div>
+ <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div>
+ </div>
+ <div class="page_content_list_items">
+ <div class="page_content_list_item_label">鏁伴噺锛�</div>
+ <div class="page_content_list_item_nr">{{ items.num }}{{ items.umodel.name }}</div>
+ </div>
+ <div class="page_content_list_item" v-if="items.lmodel">
+ <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+ <div class="page_content_list_item_nr">{{ items.lmodel.unionName }}</div>
+ </div>
+ </div>
+ </div>
+ </van-collapse-item>
+ </template>
+ </van-collapse>
+ <div class="page_h"></div>
+ <!-- 宸查�夌墿鏂� -->
+ <div class="page_yxwl">
+ <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
+ <!-- <template v-if="route.query.type == 7">
<div class="page_yxwl_title">
<div class="left">
<div class="page_yxwl_title_x"></div>
@@ -225,844 +225,917 @@
</div>
<div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
</template> -->
- <!-- 鍑哄簱鍗曪紙涓�涓粨搴擄級 -->
- <!-- <template v-if="route.query.type == 8"> -->
- <div class="page_yxwl_title">
-<!-- <div class="page_yxwl_title_x"></div>-->
-<!-- <span>宸查�夋嫨鐗╂枡</span>-->
- <div class="left">
- <div class="page_yxwl_title_x"></div>
- <span>宸查�夋嫨鐗╂枡</span>
- </div>
- <div class="right" @click="openxz">
- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>鎵嬪姩鍑哄簱</span>
- </div>
- <!-- <div></div> -->
- </div>
- <div class="page_yxwl_list" v-if="outboundList.length > 0">
- <!-- <template> -->
- <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
- <div class="page_yxwl_list_item_top">
- <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }} </div>
- <!-- <div class="page_yxwl_list_item_top_right">
+ <!-- 鍑哄簱鍗曪紙涓�涓粨搴擄級 -->
+ <!-- <template v-if="route.query.type == 8"> -->
+ <div class="page_yxwl_title">
+ <!-- <div class="page_yxwl_title_x"></div>-->
+ <!-- <span>宸查�夋嫨鐗╂枡</span>-->
+ <div class="left">
+ <div class="page_yxwl_title_x"></div>
+ <span>宸查�夋嫨鐗╂枡</span>
+ </div>
+ <div class="right" @click="openxz">
+ <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>鎵嬪姩鍑哄簱</span>
+ </div>
+ <!-- <div></div> -->
+ </div>
+ <div class="page_yxwl_list" v-if="outboundList.length > 0">
+ <!-- <template> -->
+ <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
+ <div class="page_yxwl_list_item_top">
+ <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }} </div>
+ <!-- <div class="page_yxwl_list_item_top_right">
<span>宸查�夛細<span>{{item.outPlannum}}</span> {{item.unitName}}</span>
</div> -->
- </div>
- <div class="page_yxwl_list_item_sx">
- <span class="green" v-if="item.qualityType == 0">鍚堟牸 <span>/</span></span>
- <span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇 <span>/</span></span>
- <span class="red" v-else-if="item.qualityType == 2">鎶ュ簾 <span>/</span></span>
- <span v-else>- / </span>
- <span> {{item.procedureName ? item.procedureName : '-'}} / </span>
- <span> {{item.batch ? item.batch : '-'}}</span>
- </div>
- <div class="page_yxwl_list_item_num">
- <div class="item">
- <div class="label">鍑哄簱璐т綅锛�</div>
- <div class="nr">
- <span>{{ item.locationName }}</span>
- </div>
- </div>
- <div class="item">
- <div class="label">鏁伴噺锛�</div>
- <div class="nr">
- <!-- @input="changeNum(item)" -->
- <input type="number" v-model="item.num" placeholder="璇疯緭鍏�">
- <span>{{ item.unitName }}</span>
- </div>
- </div>
- <div class="dele" @click="dele(index)">
- <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
- </div>
- </div>
- </div>
- <!-- </template> -->
- </div>
- <div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
- <!-- </template> -->
+ </div>
+ <div class="page_yxwl_list_item_sx">
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸 <span>/</span></span>
+ <span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇 <span>/</span></span>
+ <span class="red" v-else-if="item.qualityType == 2">鎶ュ簾 <span>/</span></span>
+ <span v-else>- / </span>
+ <span> {{ item.procedureName ? item.procedureName : '-' }} / </span>
+ <span> {{ item.batch ? item.batch : '-' }}</span>
+ </div>
+ <div class="page_yxwl_list_item_num">
+ <div class="item">
+ <div class="label">鍑哄簱璐т綅锛�</div>
+ <div class="nr">
+ <span>{{ item.locationName }}</span>
+ </div>
+ </div>
+ <div class="item">
+ <div class="label">鏁伴噺锛�</div>
+ <div class="nr">
+ <!-- @input="changeNum(item)" -->
+ <input type="number" v-model="item.num" placeholder="璇疯緭鍏�">
+ <span>{{ item.unitName }}</span>
+ </div>
+ </div>
+ <div class="dele" @click="dele(index)">
+ <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
+ </div>
+ </div>
</div>
- <div class="page_zw"></div>
- <!-- 鎿嶄綔鎸夐挳 -->
- <div class="page_footer">
- <button class="page_footer_qrck" v-preventReClick @click="submit">
- <span>纭鍑哄簱</span>
- </button>
- </div>
- <Access :show="show" :transferId="(route.query.id as string)" :warehouseId="warehouseId" @close="closeBox" @value="getValue" />
+ <!-- </template> -->
+ </div>
+ <div class="page_yxwl_kong" v-else><span>鏆傛棤鏁版嵁</span></div>
+ <!-- </template> -->
</div>
+ <div class="page_zw"></div>
+ <!-- 鎿嶄綔鎸夐挳 -->
+ <div class="page_footer">
+ <button class="page_footer_qrck" v-preventReClick @click="submit">
+ <span>纭鍑哄簱</span>
+ </button>
+ </div>
+ <Access :show="show" :transferId="(route.query.id as string)" :warehouseId="warehouseId" @close="closeBox"
+ @value="getValue" />
+ </div>
</template>
<script setup lang="ts">
- import { ref, onMounted } from 'vue'
- import { useRoute, useRouter } from "vue-router"
- import { Toast } from 'vant'
- import { QRCodeType } from '@/enum'
- import {
- outScanAppliances,
- wTransferForInOut,
- wTransferForInOutUpload,
- wOutBoundForInOut,
- wOutBoundForUpload,
- transferToOutNew
- } from '@/apis/ExWarehouse'
- import { useStore } from 'vuex'
- import { getDB } from '@/apis/agencyAPI'
- import Access from '@/components/common/Access.vue'
+import { ref, onMounted } from 'vue'
+import { useRoute, useRouter } from "vue-router"
+import { Toast } from 'vant'
+import { QRCodeType } from '@/enum'
+import {
+ outScanAppliances,
+ wTransferForInOut,
+ wTransferForInOutUpload,
+ wOutBoundForInOut,
+ wOutBoundForUpload,
+ transferToOutNew
+} from '@/apis/ExWarehouse'
+import { useStore } from 'vuex'
+import { getDB } from '@/apis/agencyAPI'
+import Access from '@/components/common/Access.vue'
- const route = useRoute()
- const store = useStore()
- const router = useRouter()
+const route = useRoute()
+const store = useStore()
+const router = useRouter()
- let dataItem: any = null // 宸叉壂鏁版嵁
+let dataItem: any = null // 宸叉壂鏁版嵁
- let show = ref<boolean>(false)
- let ids = ref<string>('') // 宸查��
- let warehouseId = ref('') // 浠撳簱id
- let outboundList = ref<any[]>([]) // 鍑哄簱鏁版嵁
- // 鎺у埗鎵爜鏄剧ず闅愯棌
- const openCode = ref<boolean>(false)
+let show = ref<boolean>(false)
+let ids = ref<string>('') // 宸查��
+let warehouseId = ref('') // 浠撳簱id
+let outboundList = ref<any[]>([]) // 鍑哄簱鏁版嵁
+// 鎺у埗鎵爜鏄剧ず闅愯棌
+const openCode = ref<boolean>(false)
- // 鍑哄簱绫诲瀷
- let type: any = route.query.type
+// 鍑哄簱绫诲瀷
+let type: any = route.query.type
- const activeNames = ref(['1']);
+const activeNames = ref(['1']);
- // 璇︽儏鏁版嵁
- let info: any = ref({})
+// 璇︽儏鏁版嵁
+let info: any = ref({})
- // 鎵撳紑鎵嬪姩閫夋嫨宸ヨ寮规
- const openxz = () => {
- let arr: any = []
- if (info.value.wtransferRedisCodeBeanList.length !== 0) {
- info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
- arr.push(element.appliancesId)
- })
- ids.value = arr.join(',')
- } else {
- ids.value = ''
- }
- show.value = true
- }
-
- const closeBox = () => {
- show.value = false
- }
-
- const changeNum = (item: any) => {
- info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((row: any) => {
- if (row.materialId === item.materialId) {
- if (Number(item.num) > Number(row.outPlannum)) {
- item.num = 0
- Toast.fail({ message: "鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬寰呭嚭搴撶墿鏂欐暟閲�" })
- }
- }
- })
- }
-
- // 鎻愪氦宸ヨ
- const getValue = async (val: any, i: number) => {
- // if (i === 0) {
- show.value = false
- // }
-
-
- for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
- if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].materialId == val.materialId &&
- info.value.wtransferWarehouseList[0].wtransferDetailList[i].procedureId == val.procedureId &&
- info.value.wtransferWarehouseList[0].wtransferDetailList[i].qualityType == val.qualityType &&
- info.value.wtransferWarehouseList[0].wtransferDetailList[i].batch == val.batch) {
-
- for (let s = 0; s < outboundList.value.length; s++) {
- if (outboundList.value[s].newId == info.value.wtransferWarehouseList[0].wtransferDetailList[i].id) {
- return Toast.fail({ message: "璇ョ墿鏂欐壒娆″凡瀛樺湪" })
- }
- }
-
- let obj = JSON.parse(JSON.stringify(val))
- obj.newId = info.value.wtransferWarehouseList[0].wtransferDetailList[i].id
- outboundList.value.push(obj)
-
- }
- }
-
- console.log(outboundList.value)
- // let res = await outScanAppliances({
- // barCode: val.prefix + val.code,
- // pId: info.value.wtransfer.id,
- // type: 1
- // })
- // if (res.code === 200) {
- // let isData: string = ''
- // info.value.wtransferWarehouseList.forEach((item: any) => {
- // if (res.data.warehouseId === item.warehouseId) {
- // item.wtransferDetailList.forEach((item1: any) => {
- // if (item1.materialId !== res.data.materialId) {
- // isData = 'wl'
- // } else if (res.data.qualityType !== item1.qualityType) {
- // isData = 'lx'
- // } else if (res.data.procedureId !== item1.procedureId) {
- // isData = 'gx'
- // } else if (item1.batch ? res.data.batch !== item1.batch : false) {
- // isData = 'pc'
- // } else {
- // isData = ''
- // }
- // if (item1.materialId == res.data.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && item1.batch ? res.data.batch == item1.batch : true) {
- // dataItem = res.data
- // dataItem.wtransferDetailId = item1.id
- // dataItem.wtransferId = item1.transferId
- // dataItem.appliancesId = res.data.id
- // let rul = upload()
- // return;
- // }
- // })
- // } else {
- // isData = 'ck'
- // }
- // if (isData === 'ck') {
- // Toast.fail({ message: "浠撳簱涓嶄竴鑷�" })
- // } else if (isData === 'wl') {
- // Toast.fail({ message: "鐗╂枡涓嶄竴鑷�" })
- // } else if (isData === 'lx') {
- // Toast.fail({ message: "璐ㄩ噺绫诲瀷涓嶄竴鑷�" })
- // } else if (isData === 'gx') {
- // Toast.fail({ message: "宸ュ簭涓嶄竴鑷�" })
- // } else if (isData === 'pc') {
- // Toast.fail({ message: "鎵规涓嶄竴鑷�" })
- // }
- // })
- // }
- // show.value = false
- }
-
- // 鑾峰彇璇︽儏 (杞簱鍗�/鍑哄簱鍗�)
- const getInfo = () => {
- let type: string = route.query.type as string
- if (type === QRCodeType.CKD.toString()) {
- console.log('鍑哄簱鍗�')
- wOutBoundForInOut({
- id: Number(route.query.id),
- wOutboundType: 0
- }).then(res => {
- if (res.code === 200) {
- info.value = res.data
- warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
- } else {
- Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
- setTimeout(() => {
- router.go(-1)
- }, 2000)
- }
- })
- } else if (type === QRCodeType.ZKD.toString()) {
- console.log('杞簱鍗�')
- wTransferForInOut({
- id: Number(route.query.id),
- wTransferType: 0
- }).then(res => {
- if (res.code === 200) {
- info.value = res.data
- warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
- } else {
- Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
- setTimeout(() => {
- router.go(-1)
- }, 2000)
- }
- })
- }
- }
-
- // 鍒犻櫎瀵瑰簲鐨勬壒娆�
- const dele = (index: Number) => {
- outboundList.value.forEach((item: any, i: number) => {
- if (index === i) {
- outboundList.value.splice(i, 1)
- }
- })
- }
-
- // 涓婁紶宸ヨ
- const upload = () => {
- if (type === QRCodeType.ZKD.toString()) {
- wTransferForInOut({
- id: Number(route.query.id),
- optType: 1,
- wTransferType: 0,
- jsonBean: dataItem
- }).then(res => {
- if (res.code === 200) {
- getInfo()
- }
- })
- } else if (type === QRCodeType.CKD.toString()) {
- wOutBoundForInOut({
- id: Number(route.query.id),
- optType: 1,
- wOutboundType: 0,
- jsonBean: dataItem
- }).then(res => {
- if (res.code === 200) {
- getInfo()
- }
- })
- }
- }
-
- // 鐐瑰嚮鎵爜鍑哄簱
- const ck = () => {
- openCode.value = true
- }
-
- // 鎻愪氦鎿嶄綔
- const submit = () => {
- if (type === QRCodeType.ZKD.toString()) {
- if (outboundList.value.length > 0) {
- let result = outboundList.value.reduce((a, b) => {
- if (a[b.newId]) {
- a[b.newId].push(b);
- } else {
- a[b.newId] = [b];
- }
- return a;
- }, {});
-
- for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
- for (let a in result) {
- if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) {
- let total = 0
- for (let b = 0; b < result[a].length; b++) {
- total = Number(total) + Number(result[a][b].num)
- }
- console.log(total, info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum)
- if (!total || total <= 0) {
- return Toast.fail({ message: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', forbidClick: true, duration: 2000 })
- }
- if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) {
- return Toast.fail({ message: '鍑哄簱鏁伴噺涓嶈兘澶т簬寰呭嚭搴撴暟閲�', forbidClick: true, duration: 2000 })
- }
- }
- }
- }
-
- let submitTransferOutDetailDTOList: any = []
- outboundList.value.forEach((item: any) => {
- info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((child: any) => {
- if (item.newId == child.id) {
- submitTransferOutDetailDTOList.push({
- outNum: item.num,
- wstockId: item.id,
- wtransferDetailId: child.id
- })
- }
- })
- })
- transferToOutNew({
- submitTransferOutDetailDTOList,
- wtransferId: route.query.id
- }).then(res => {
- if (res.code === 200) {
- store.dispatch('getUpcomingNum')
- Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
- setTimeout(() => {
- router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
- }, 2000)
- }
- })
- } else {
- Toast.fail({ message: '璇烽�夋嫨鍑哄簱鐗╂枡', forbidClick: true, duration: 2000 })
- }
- // let yx: number = 0
- // let dc: number = 0
- // info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
- // yx = yx + element.num
- // })
- // info.value.wtransferWarehouseList.forEach((element: any) => {
- // element.wtransferDetailList.forEach((elementChilder: any) => {
- // dc = dc + elementChilder.outPlannum
- // })
- // })
- // if (yx < dc) {
- // Dialog.confirm({
- // title: '鎻愮ず',
- // message: '寰呭嚭鐗╂枡涓庡凡鍑虹墿鏂欐暟閲忎笉涓�鑷达紝鏄惁纭鍑哄簱',
- // })
- // .then(() => {
- // wTransferForInOutUpload({
- // id: info.value.wtransfer.id,
- // wTransferType: 0
- // }).then(res => {
- // if (res.code === 200) {
- // store.dispatch('getUpcomingNum')
- // Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
- // setTimeout(() => {
- // // router.go(-1)
- // router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
- // }, 2000)
- // }
- // })
- // return
- // })
- // .catch(() => {
-
- // });
- // } else {
- // wTransferForInOutUpload({
- // id: info.value.wtransfer.id,
- // wTransferType: 0
- // }).then(res => {
- // if (res.code === 200) {
- // store.dispatch('getUpcomingNum')
- // Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
- // setTimeout(() => {
- // // router.go(-1)
- // router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
- // }, 2000)
- // }
- // })
- // }
- } else if (type === QRCodeType.CKD.toString()) {
- wOutBoundForUpload({
- id: info.value.woutbound.id,
- wOutboundType: 0
- }).then(res => {
- if (res.code === 200) {
- store.dispatch('getUpcomingNum')
- Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
- setTimeout(() => {
- // router.go(-1)
- router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
- }, 2000)
- }
- })
- }
- }
-
- // 鑾峰彇寰呭姙璇︽儏(鍒ゆ柇褰撳墠寰呭姙鏄惁宸插鐞�)
- const getDBs = async (id: string): Promise<any> => {
- let res = await getDB(id)
- if (res.code === 200) {
- if (res.data.status === 1) {
- if (type === QRCodeType.CKD.toString()) {
- await router.replace({ name: 'wOutboundDetail', query: { id: route.query.id } })
- } else if (type === QRCodeType.ZKD.toString()) {
- await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
- }
- } else {
- await getInfo()
- }
- }
- }
-
- onMounted(() => {
- if (route.query.dbid) {
- getDBs(route.query.dbid as string)
- } else {
- getInfo()
- }
+// 鎵撳紑鎵嬪姩閫夋嫨宸ヨ寮规
+const openxz = () => {
+ let arr: any = []
+ if (info.value.wtransferRedisCodeBeanList.length !== 0) {
+ info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
+ arr.push(element.appliancesId)
})
+ ids.value = arr.join(',')
+ } else {
+ ids.value = ''
+ }
+ show.value = true
+}
+
+const closeBox = () => {
+ show.value = false
+}
+
+const changeNum = (item: any) => {
+ info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((row: any) => {
+ if (row.materialId === item.materialId) {
+ if (Number(item.num) > Number(row.outPlannum)) {
+ item.num = 0
+ Toast.fail({ message: "鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬寰呭嚭搴撶墿鏂欐暟閲�" })
+ }
+ }
+ })
+}
+
+// 鎻愪氦宸ヨ
+const getValue = async (val: any, i: number) => {
+ // if (i === 0) {
+ show.value = false
+ // }
+
+
+ for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
+ if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].materialId == val.materialId &&
+ info.value.wtransferWarehouseList[0].wtransferDetailList[i].procedureId == val.procedureId &&
+ info.value.wtransferWarehouseList[0].wtransferDetailList[i].qualityType == val.qualityType &&
+ info.value.wtransferWarehouseList[0].wtransferDetailList[i].batch == val.batch) {
+
+ for (let s = 0; s < outboundList.value.length; s++) {
+ if (outboundList.value[s].newId == info.value.wtransferWarehouseList[0].wtransferDetailList[i].id) {
+ return Toast.fail({ message: "璇ョ墿鏂欐壒娆″凡瀛樺湪" })
+ }
+ }
+
+ let obj = JSON.parse(JSON.stringify(val))
+ obj.newId = info.value.wtransferWarehouseList[0].wtransferDetailList[i].id
+ outboundList.value.push(obj)
+
+ }
+ }
+
+ console.log(outboundList.value)
+ // let res = await outScanAppliances({
+ // barCode: val.prefix + val.code,
+ // pId: info.value.wtransfer.id,
+ // type: 1
+ // })
+ // if (res.code === 200) {
+ // let isData: string = ''
+ // info.value.wtransferWarehouseList.forEach((item: any) => {
+ // if (res.data.warehouseId === item.warehouseId) {
+ // item.wtransferDetailList.forEach((item1: any) => {
+ // if (item1.materialId !== res.data.materialId) {
+ // isData = 'wl'
+ // } else if (res.data.qualityType !== item1.qualityType) {
+ // isData = 'lx'
+ // } else if (res.data.procedureId !== item1.procedureId) {
+ // isData = 'gx'
+ // } else if (item1.batch ? res.data.batch !== item1.batch : false) {
+ // isData = 'pc'
+ // } else {
+ // isData = ''
+ // }
+ // if (item1.materialId == res.data.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && item1.batch ? res.data.batch == item1.batch : true) {
+ // dataItem = res.data
+ // dataItem.wtransferDetailId = item1.id
+ // dataItem.wtransferId = item1.transferId
+ // dataItem.appliancesId = res.data.id
+ // let rul = upload()
+ // return;
+ // }
+ // })
+ // } else {
+ // isData = 'ck'
+ // }
+ // if (isData === 'ck') {
+ // Toast.fail({ message: "浠撳簱涓嶄竴鑷�" })
+ // } else if (isData === 'wl') {
+ // Toast.fail({ message: "鐗╂枡涓嶄竴鑷�" })
+ // } else if (isData === 'lx') {
+ // Toast.fail({ message: "璐ㄩ噺绫诲瀷涓嶄竴鑷�" })
+ // } else if (isData === 'gx') {
+ // Toast.fail({ message: "宸ュ簭涓嶄竴鑷�" })
+ // } else if (isData === 'pc') {
+ // Toast.fail({ message: "鎵规涓嶄竴鑷�" })
+ // }
+ // })
+ // }
+ // show.value = false
+}
+
+// 鑾峰彇璇︽儏 (杞簱鍗�/鍑哄簱鍗�)
+const getInfo = () => {
+ let type: string = route.query.type as string
+ if (type === QRCodeType.CKD.toString()) {
+ console.log('鍑哄簱鍗�')
+ wOutBoundForInOut({
+ id: Number(route.query.id),
+ wOutboundType: 0
+ }).then(res => {
+ if (res.code === 200) {
+ info.value = res.data
+ warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
+ } else {
+ Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
+ setTimeout(() => {
+ router.go(-1)
+ }, 2000)
+ }
+ })
+ } else if (type === QRCodeType.ZKD.toString()) {
+ console.log('杞簱鍗�')
+ wTransferForInOut({
+ id: Number(route.query.id),
+ wTransferType: 0
+ }).then(res => {
+ if (res.code === 200) {
+ info.value = res.data
+ warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString()
+ } else {
+ Toast.fail({ message: res.message, forbidClick: true, duration: 2000 })
+ setTimeout(() => {
+ router.go(-1)
+ }, 2000)
+ }
+ })
+ }
+}
+
+// 鍒犻櫎瀵瑰簲鐨勬壒娆�
+const dele = (index: Number) => {
+ outboundList.value.forEach((item: any, i: number) => {
+ if (index === i) {
+ outboundList.value.splice(i, 1)
+ }
+ })
+}
+
+// 涓婁紶宸ヨ
+const upload = () => {
+ if (type === QRCodeType.ZKD.toString()) {
+ wTransferForInOut({
+ id: Number(route.query.id),
+ optType: 1,
+ wTransferType: 0,
+ jsonBean: dataItem
+ }).then(res => {
+ if (res.code === 200) {
+ getInfo()
+ }
+ })
+ } else if (type === QRCodeType.CKD.toString()) {
+ wOutBoundForInOut({
+ id: Number(route.query.id),
+ optType: 1,
+ wOutboundType: 0,
+ jsonBean: dataItem
+ }).then(res => {
+ if (res.code === 200) {
+ getInfo()
+ }
+ })
+ }
+}
+
+// 鐐瑰嚮鎵爜鍑哄簱
+const ck = () => {
+ openCode.value = true
+}
+
+// 鎻愪氦鎿嶄綔
+const submit = () => {
+ if (type === QRCodeType.ZKD.toString()) {
+ if (outboundList.value.length > 0) {
+ let result = outboundList.value.reduce((a, b) => {
+ if (a[b.newId]) {
+ a[b.newId].push(b);
+ } else {
+ a[b.newId] = [b];
+ }
+ return a;
+ }, {});
+
+ for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
+ for (let a in result) {
+ if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) {
+ let total = 0
+ for (let b = 0; b < result[a].length; b++) {
+ total = Number(total) + Number(result[a][b].num)
+ }
+ console.log(total, info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum)
+ if (!total || total <= 0) {
+ return Toast.fail({ message: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', forbidClick: true, duration: 2000 })
+ }
+ if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) {
+ return Toast.fail({ message: '鍑哄簱鏁伴噺涓嶈兘澶т簬寰呭嚭搴撴暟閲�', forbidClick: true, duration: 2000 })
+ }
+ }
+ }
+ }
+
+ let submitTransferOutDetailDTOList: any = []
+ outboundList.value.forEach((item: any) => {
+ info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((child: any) => {
+ if (item.newId == child.id) {
+ submitTransferOutDetailDTOList.push({
+ outNum: item.num,
+ wstockId: item.id,
+ wtransferDetailId: child.id
+ })
+ }
+ })
+ })
+ transferToOutNew({
+ submitTransferOutDetailDTOList,
+ wtransferId: route.query.id
+ }).then(res => {
+ if (res.code === 200) {
+ store.dispatch('getUpcomingNum')
+ Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+ setTimeout(() => {
+ router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+ }, 2000)
+ }
+ })
+ } else {
+ Toast.fail({ message: '璇烽�夋嫨鍑哄簱鐗╂枡', forbidClick: true, duration: 2000 })
+ }
+ // let yx: number = 0
+ // let dc: number = 0
+ // info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
+ // yx = yx + element.num
+ // })
+ // info.value.wtransferWarehouseList.forEach((element: any) => {
+ // element.wtransferDetailList.forEach((elementChilder: any) => {
+ // dc = dc + elementChilder.outPlannum
+ // })
+ // })
+ // if (yx < dc) {
+ // Dialog.confirm({
+ // title: '鎻愮ず',
+ // message: '寰呭嚭鐗╂枡涓庡凡鍑虹墿鏂欐暟閲忎笉涓�鑷达紝鏄惁纭鍑哄簱',
+ // })
+ // .then(() => {
+ // wTransferForInOutUpload({
+ // id: info.value.wtransfer.id,
+ // wTransferType: 0
+ // }).then(res => {
+ // if (res.code === 200) {
+ // store.dispatch('getUpcomingNum')
+ // Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+ // setTimeout(() => {
+ // // router.go(-1)
+ // router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+ // }, 2000)
+ // }
+ // })
+ // return
+ // })
+ // .catch(() => {
+
+ // });
+ // } else {
+ // wTransferForInOutUpload({
+ // id: info.value.wtransfer.id,
+ // wTransferType: 0
+ // }).then(res => {
+ // if (res.code === 200) {
+ // store.dispatch('getUpcomingNum')
+ // Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+ // setTimeout(() => {
+ // // router.go(-1)
+ // router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
+ // }, 2000)
+ // }
+ // })
+ // }
+ } else if (type === QRCodeType.CKD.toString()) {
+ wOutBoundForUpload({
+ id: info.value.woutbound.id,
+ wOutboundType: 0
+ }).then(res => {
+ if (res.code === 200) {
+ store.dispatch('getUpcomingNum')
+ Toast.success({ message: '鎿嶄綔鎴愬姛', forbidClick: true, duration: 2000 })
+ setTimeout(() => {
+ // router.go(-1)
+ router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
+ }, 2000)
+ }
+ })
+ }
+}
+
+// 鑾峰彇寰呭姙璇︽儏(鍒ゆ柇褰撳墠寰呭姙鏄惁宸插鐞�)
+const getDBs = async (id: string): Promise<any> => {
+ let res = await getDB(id)
+ if (res.code === 200) {
+ if (res.data.status === 1) {
+ if (type === QRCodeType.CKD.toString()) {
+ await router.replace({ name: 'wOutboundDetail', query: { id: route.query.id } })
+ } else if (type === QRCodeType.ZKD.toString()) {
+ await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
+ }
+ } else {
+ await getInfo()
+ }
+ }
+}
+
+onMounted(() => {
+ if (route.query.dbid) {
+ getDBs(route.query.dbid as string)
+ } else {
+ getInfo()
+ }
+})
</script>
<style lang="scss" scoped>
- .page {
+.page {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+
+ .page_info {
+ padding: 30px;
+ background: #ffffff;
+
+ .page_info_title {
+ font-size: 32px;
+ font-weight: 500;
+ color: #4275FC;
+ }
+
+ .page_info_list {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 30px 0 0 0;
+
+ .page_info_list_item {
width: 100%;
- height: 100%;
- position: absolute;
- background: #F7F7F7;
- .page_info {
- padding: 30px;
- background: #ffffff;
- .page_info_title {
- font-size: 32px;
- font-weight: 500;
- color: #4275FC;
- }
- .page_info_list {
- display: flex;
- flex-wrap: wrap;
- margin: 30px 0 0 0;
- .page_info_list_item {
- width: 100%;
- display: flex;
- margin-top: 24px;
- &:nth-child(1) {
- margin-top: 0;
- }
- /*&:nth-child(2) {*/
- /* margin-top: 0;*/
- /*}*/
- .page_info_list_item_label {
- flex-shrink: 0;
- font-size: 26px;
- font-weight: 400;
- color: #666666;
- }
- .page_info_list_item_nr {
- flex: 1;
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- .page_info_bz {
- padding: 24px;
- background: #F7F7F7;
- margin-top: 30px;
- .page_info_bz_title {
- font-size: 26px;
- font-weight: 500;
- color: #222222;
- margin-bottom: 20px;
- }
- .page_info_bz_nr {
- font-size: 24px;
- font-weight: 400;
- color: #333333;
- }
- }
+ display: flex;
+ margin-top: 24px;
+
+ &:nth-child(1) {
+ margin-top: 0;
}
- .switch {
- padding: 0 30px;
- button {
- width: 100%;
- border: none;
- height: 76px;
- background: #ffffff;
- border-radius: 36px;
- font-size: 26px;
- font-weight: 400;
- color: black;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 14px;
- }
- }
+
+ /*&:nth-child(2) {*/
+ /* margin-top: 0;*/
+ /*}*/
+ .page_info_list_item_label {
+ flex-shrink: 0;
+ font-size: 26px;
+ font-weight: 400;
+ color: #666666;
}
- .page_h {
- height: 20px;
+
+ .page_info_list_item_nr {
+ flex: 1;
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
}
- .page_sfq {
- font-size: 32px;
+ }
+ }
+
+ .page_info_bz {
+ padding: 24px;
+ background: #F7F7F7;
+ margin-top: 30px;
+
+ .page_info_bz_title {
+ font-size: 26px;
+ font-weight: 500;
+ color: #222222;
+ margin-bottom: 20px;
+ }
+
+ .page_info_bz_nr {
+ font-size: 24px;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+
+ .switch {
+ padding: 0 30px;
+
+ button {
+ width: 100%;
+ border: none;
+ height: 76px;
+ background: #ffffff;
+ border-radius: 36px;
+ font-size: 26px;
+ font-weight: 400;
+ color: black;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 14px;
+ }
+ }
+ }
+
+ .page_h {
+ height: 20px;
+ }
+
+ .page_sfq {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 36px;
+ height: 36px;
+ margin-right: 16px;
+ }
+ }
+
+ .page_dck {
+ .page_dck_title {
+ display: flex;
+ align-items: center;
+
+ .page_dck_title_x {
+ width: 8px;
+ height: 30px;
+ background: #4275FC;
+ border-radius: 2px;
+ margin-right: 16px;
+ }
+
+ span {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_content {
+ margin-top: 28px;
+
+ .page_content_title {
+ display: flex;
+ flex-direction: column;
+
+ .page_content_title_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:nth-child(1) {
+ font-size: 30px;
font-weight: 500;
color: #222222;
- display: flex;
- align-items: center;
- img {
- width: 36px;
- height: 36px;
- margin-right: 16px;
+ }
+
+ &:nth-child(2) {
+ flex-shrink: 0;
+ font-size: 24px;
+ font-weight: 400;
+ color: #333333;
+
+ span {
+ font-size: 24px;
+ color: $nav-color;
}
+ }
}
- .page_dck {
- .page_dck_title {
- display: flex;
- align-items: center;
- .page_dck_title_x {
- width: 8px;
- height: 30px;
- background: #4275FC;
- border-radius: 2px;
- margin-right: 16px;
- }
- span {
- font-size: 32px;
- font-weight: 500;
- color: #222222;
- }
- }
+ }
+
+ .page_content_title_bottom {
+ .green {
+ color: $nav-stateColor7 !important;
}
- .page_content {
- margin-top: 28px;
- .page_content_title {
- display: flex;
- flex-direction: column;
- .page_content_title_top {
- display: flex;
- align-items: center;
- justify-content: space-between;
- span {
- &:nth-child(1) {
- font-size: 30px;
- font-weight: 500;
- color: #222222;
- }
- &:nth-child(2) {
- flex-shrink: 0;
- font-size: 24px;
- font-weight: 400;
- color: #333333;
- span {
- font-size: 24px;
- color: $nav-color;
- }
- }
- }
- }
- .page_content_title_bottom {
- .green {
- color: $nav-stateColor7 !important;
- }
- .warning {
- color: $nav-stateColor5 !important;
- }
- .error {
- color: $nav-stateColor4 !important;
- }
- span {
- font-size: 24px;
- font-weight: 400;
- color: #666666;
- }
- }
- }
- .page_content_list {
- width: 100%;
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- padding-bottom: 30px;
- margin-top: 28px;
- border-bottom: 1px solid #E5E5E5;
- &:first-child {
- margin: 0;
- }
- &:last-child {
- border: none;
- }
- .page_content_list_items {
- width: 30%;
- display: flex;
- margin-top: 24px;
- .page_content_list_item_label {
- font-size: 26px;
- font-weight: 400;
- color: #666666;
- flex-shrink: 0;
- }
- .page_content_list_item_nr {
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- .page_content_list_item {
- width: 70%;
- display: flex;
- .page_content_list_item_label {
- font-size: 26px;
- font-weight: 400;
- color: #666666;
- flex-shrink: 0;
- }
- .page_content_list_item_nr {
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- }
+
+ .warning {
+ color: $nav-stateColor5 !important;
}
- .page_yxwl {
- padding: 30px;
- background: #ffffff;
- .page_yxwl_title {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .page_yxwl_title_x {
- width: 8px;
- height: 30px;
- background: #4275FC;
- border-radius: 2px;
- margin-right: 16px;
- }
- span {
- font-size: 32px;
- font-weight: 500;
- color: #222222;
- }
- .left {
- display: flex;
- align-items: center;
- .page_yxwl_title_x {
- width: 8px;
- height: 30px;
- background: #4275FC;
- border-radius: 2px;
- margin-right: 16px;
- }
- span {
- font-size: 32px;
- font-weight: 500;
- color: #222222;
- }
- }
- .right {
- display: flex;
- align-items: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 14px;
- }
- span {
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- .page_yxwl_kong {
- padding: 50px 0;
- display: flex;
- align-items: center;
- justify-content: center;
- span {
- font-size: 25px;
- color: black;
- }
- }
- .page_yxwl_list {
- display: flex;
- flex-direction: column;
- padding-bottom: 30px;
- border-bottom: 1px solid #ececec;
- &:last-child {
- margin-bottom: 0;
- border: none;
- }
- .page_yxwl_list_item {
- margin-top: 28px;
- .page_yxwl_list_item_sx {
- margin-top: 10px;
- span {
- color: black;
- }
- }
- .page_yxwl_list_item_top {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .page_yxwl_list_item_top_left {
- font-size: 30px;
- font-weight: 500;
- color: #222222;
- }
- .page_yxwl_list_item_top_right {
- span {
- font-size: 24px;
- font-weight: 400;
- color: #333333;
- span {
- font-size: 24px;
- font-weight: 400;
- color: $nav-color;
- }
- }
- }
- }
- .page_yxwl_list_item_num {
- display: flex;
- position: relative;
- margin-top: 36px;
- &:first-child {
- margin-top: 0;
- }
- .dele {
- position: absolute;
- right: -30px;
- width: 48px;
- height: 48px;
- img {
- width: 100%;
- height: 100%;
- }
- }
- .item {
- width: 50%;
- display: flex;
- align-items: center;
- .label {
- flex-shrink: 0;
- font-size: 26px;
- font-weight: 400;
- color: #666666;
- flex-shrink: 0;
- }
- .nr {
- flex: 1;
- display: flex;
- align-items: center;
- input {
- width: 130px;
- height: 40px;
- border-radius: 8px;
- border: 1PX solid #E5E5E5;
- margin-right: 10px;
- }
- span {
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- }
- }
- }
+
+ .error {
+ color: $nav-stateColor4 !important;
}
- .page_zw {
- height: 160px;
+
+ span {
+ font-size: 24px;
+ font-weight: 400;
+ color: #666666;
}
- .page_footer {
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- padding: 0 30px 68px 30px;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .page_footer_smck {
- width: 334px;
- height: 88px;
- border: none;
- background: #FFFFFF;
- box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
- border-radius: 8px;
- font-size: 32px;
- font-weight: 500;
- color: $nav-color;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 30px;
- height: 30px;
- margin-right: 10px;
- }
- }
- .page_footer_qrck {
- // width: 334px;
- flex: 1;
- height: 88px;
- border: none;
- background: $nav-color;
- box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
- border-radius: 8px;
- font-size: 32px;
- font-weight: 500;
- color: #FFFFFF;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
+ }
}
-</style>
+
+ .page_content_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ padding-bottom: 30px;
+ margin-top: 28px;
+ border-bottom: 1px solid #E5E5E5;
+
+ &:first-child {
+ margin: 0;
+ }
+
+ &:last-child {
+ border: none;
+ }
+
+ .page_content_list_items {
+ width: 30%;
+ display: flex;
+ margin-top: 24px;
+
+ .page_content_list_item_label {
+ font-size: 26px;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_item {
+ width: 70%;
+ display: flex;
+
+ .page_content_list_item_label {
+ font-size: 26px;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+
+ .page_yxwl {
+ padding: 30px;
+ background: #ffffff;
+
+ .page_yxwl_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_title_x {
+ width: 8px;
+ height: 30px;
+ background: #4275FC;
+ border-radius: 2px;
+ margin-right: 16px;
+ }
+
+ span {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .left {
+ display: flex;
+ align-items: center;
+
+ .page_yxwl_title_x {
+ width: 8px;
+ height: 30px;
+ background: #4275FC;
+ border-radius: 2px;
+ margin-right: 16px;
+ }
+
+ span {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 14px;
+ }
+
+ span {
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_yxwl_kong {
+ padding: 50px 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ span {
+ font-size: 25px;
+ color: black;
+ }
+ }
+
+ .page_yxwl_list {
+ display: flex;
+ flex-direction: column;
+ padding-bottom: 30px;
+ border-bottom: 1px solid #ececec;
+
+ &:last-child {
+ margin-bottom: 0;
+ border: none;
+ }
+
+ .page_yxwl_list_item {
+ margin-top: 28px;
+
+ .page_yxwl_list_item_sx {
+ margin-top: 10px;
+
+ span {
+ color: black;
+ }
+ }
+
+ .page_yxwl_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_list_item_top_left {
+ font-size: 30px;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .page_yxwl_list_item_top_right {
+ span {
+ font-size: 24px;
+ font-weight: 400;
+ color: #333333;
+
+ span {
+ font-size: 24px;
+ font-weight: 400;
+ color: $nav-color;
+ }
+ }
+ }
+ }
+
+ .page_yxwl_list_item_num {
+ display: flex;
+ position: relative;
+ margin-top: 36px;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ .dele {
+ position: absolute;
+ right: -30px;
+ width: 48px;
+ height: 48px;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .item {
+ width: 50%;
+ display: flex;
+ align-items: center;
+
+ .label {
+ flex-shrink: 0;
+ font-size: 26px;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ flex: 1;
+ display: flex;
+ align-items: center;
+
+ input {
+ width: 130px;
+ height: 40px;
+ border-radius: 8px;
+ border: 1PX solid #E5E5E5;
+ margin-right: 10px;
+ }
+
+ span {
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .page_zw {
+ height: 160px;
+ }
+
+ .page_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 0 30px 68px 30px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_footer_smck {
+ width: 334px;
+ height: 88px;
+ border: none;
+ background: #FFFFFF;
+ box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8px;
+ font-size: 32px;
+ font-weight: 500;
+ color: $nav-color;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 30px;
+ height: 30px;
+ margin-right: 10px;
+ }
+ }
+
+ .page_footer_qrck {
+ // width: 334px;
+ flex: 1;
+ height: 88px;
+ border: none;
+ background: $nav-color;
+ box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8px;
+ font-size: 32px;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+}</style>
diff --git a/h5_standard/src/views/needToBeDealtWith/outbound.vue b/h5_standard/src/views/needToBeDealtWith/outbound.vue
index 4f4b6e4..5e71a6d 100644
--- a/h5_standard/src/views/needToBeDealtWith/outbound.vue
+++ b/h5_standard/src/views/needToBeDealtWith/outbound.vue
@@ -172,7 +172,8 @@
// 鍒犻櫎
const dele = (index: any) => {
if (list.value.length === 1) {
- Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ // Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭紒')
return
}
list.value.splice(index, 1)
diff --git a/h5_standard/src/views/requisition/scrapped.vue b/h5_standard/src/views/requisition/scrapped.vue
index aca07c6..3c4852c 100644
--- a/h5_standard/src/views/requisition/scrapped.vue
+++ b/h5_standard/src/views/requisition/scrapped.vue
@@ -122,7 +122,8 @@
// 鍒犻櫎
const dele = (index: any) => {
if (list.value.length === 1) {
- Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ // Toast('鑷冲皯淇濈暀涓�鏉″伐瑁呬俊鎭�')
+ Toast('鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�')
return
}
list.value.splice(index, 1)
diff --git a/h5_standard/src/views/workOrder/workOrderReporting.vue b/h5_standard/src/views/workOrder/workOrderReporting.vue
index 689f086..df6f007 100644
--- a/h5_standard/src/views/workOrder/workOrderReporting.vue
+++ b/h5_standard/src/views/workOrder/workOrderReporting.vue
@@ -1,9 +1,9 @@
<template>
- <div class="bg">
- <!-- 宸ュ崟淇℃伅 -->
- <V-WorkOrderInfo :info="info"></V-WorkOrderInfo>
- <!-- 鎵爜鎶曟枡/浜у嚭 -->
- <!-- <div class="details_cz">
+ <div class="bg">
+ <!-- 宸ュ崟淇℃伅 -->
+ <V-WorkOrderInfo :info="info"></V-WorkOrderInfo>
+ <!-- 鎵爜鎶曟枡/浜у嚭 -->
+ <!-- <div class="details_cz">
<div class="details_cz_smtl" @click="jump1('tl')" v-if="proxy.$auth('h5:workorderinput:create')">
<img src="@/assets/icon/gongdan_ic_saoma@2x.png" alt="" />
<span>鎵爜鎶曟枡</span>
@@ -14,173 +14,182 @@
<span>鎵爜浜у嚭</span>
</div>
</div> -->
- <div class="bg_cate">
- <div @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'" v-for="(item, index) in cate" :key="index">{{ item.name }}</div>
+ <div class="bg_cate">
+ <div @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+ v-for="(item, index) in cate" :key="index">{{ item.name }}</div>
+ </div>
+ <!-- 鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏 -->
+ <div class="bg_list" v-if="typeView === 0">
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x"></div>
+ <span>鎶曟枡鏄庣粏</span>
+ <!-- <span class="blue left">{{tlTotal()}}</span> -->
+ </div>
+ <div class="bg_list_item_top_right" @click="jumpTL"
+ v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)">
+ <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+ <span>鎵嬪姩褰曞叆</span>
+ </div>
</div>
- <!-- 鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏 -->
- <div class="bg_list" v-if="typeView === 0">
- <div class="bg_list_item">
- <div class="bg_list_item_top">
- <div class="bg_list_item_top_left">
- <div class="bg_list_item_top_left_x"></div>
- <span>鎶曟枡鏄庣粏</span>
- <!-- <span class="blue left">{{tlTotal()}}</span> -->
- </div>
- <div class="bg_list_item_top_right" @click="jumpTL" v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)">
- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
- <span>鎵嬪姩褰曞叆</span>
- </div>
+ <template v-if="feedingData && feedingData.length > 0">
+ <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <!-- <span>{{item.code}}</span> -->
+ <div class="bg_list_item_num_item_wl">
+ <span> {{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : ''
+ }}</span>
+ <div class="bg_list_item_num_item_wl_lx">
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span>
+ <span class="yellow" v-if="item.qualityType == 1">涓嶈壇 / </span>
+ <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span>
+ <span>{{ item.locationName }}</span>
+ <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span>
</div>
- <template v-if="feedingData && feedingData.length > 0">
- <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
- <div class="bg_list_item_h">
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <!-- <span>{{item.code}}</span> -->
- <div class="bg_list_item_num_item_wl">
- <span> {{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span>
- <div class="bg_list_item_num_item_wl_lx">
- <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span>
- <span class="yellow" v-if="item.qualityType == 1">涓嶈壇 / </span>
- <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span>
- <span>{{ item.locationName }}</span>
- <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span>
- </div>
- </div>
- <div class="bg_list_item_num_item_sr">
- <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" />
- <span>{{item.unitName}}</span>
- </div>
- </div>
- </div>
- </div>
-
- <template #right v-if="proxy.$auth('h5:workorderinput:delete')">
- <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'T')" type="danger" />
- </template>
- </van-swipe-cell>
- </template>
- <template v-else>
- <div class="kong">
- <span>鏆傛棤鏁版嵁</span>
- </div>
- </template>
+ </div>
+ <div class="bg_list_item_num_item_sr">
+ <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')"
+ @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" />
+ <span>{{ item.unitName }}</span>
+ </div>
</div>
- <div class="bg_list_item">
- <div class="bg_list_item_top">
- <div class="bg_list_item_top_left">
- <div class="bg_list_item_top_left_x"></div>
- <span>浜у嚭鏄庣粏</span>
- </div>
- </div>
- <!-- <template v-if="produceData && produceData.length > 0"> -->
- <!-- v-for="(item, index) in produceData" :key="index" -->
- <van-swipe-cell>
- <div class="bg_list_item_h">
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <span>鑹搧鏁�({{ info.umodel ? info.umodel.name : '' }})</span>
- <div class="bg_list_item_num_item_sr">
- <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
- <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
- <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="璇疯緭鍏�" />
- <span v-if="info.umodel">{{info.umodel.name}}</span>
- </div>
- </div>
- </div>
- </div>
- </van-swipe-cell>
- <van-swipe-cell>
- <div class="bg_list_item_h">
- <div class="bg_list_item_num">
- <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
- <div class="bg_list_item_num_item">
- <span>涓嶈壇鏁�({{ info.umodel ? info.umodel.name : '' }})</span>
- <div class="bg_list_item_num_item_sr">
- <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
- <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
- <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="璇疯緭鍏�" />
- <span v-if="info.umodel">{{info.umodel.name}}</span>
- </div>
- </div>
- </div>
- </div>
- </van-swipe-cell>
- <van-swipe-cell v-if="produceFrom.undesirable > 0">
- <div class="bg_list_item_h">
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item" @click="show = true">
- <span>涓嶈壇椤�</span>
- <div class="bg_list_item_num_item_sr">
- <span class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '璁剧疆'}}</span>
- <img src="@/assets/icon/ic_ar@2x.png" alt="" />
- </div>
- </div>
- </div>
- </div>
- </van-swipe-cell>
- <!-- </template>
+ </div>
+ </div>
+
+ <template #right v-if="proxy.$auth('h5:workorderinput:delete')">
+ <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'T')" type="danger" />
+ </template>
+ </van-swipe-cell>
+ </template>
+ <template v-else>
+ <div class="kong">
+ <span>鏆傛棤鏁版嵁</span>
+ </div>
+ </template>
+ </div>
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x"></div>
+ <span>浜у嚭鏄庣粏</span>
+ </div>
+ </div>
+ <!-- <template v-if="produceData && produceData.length > 0"> -->
+ <!-- v-for="(item, index) in produceData" :key="index" -->
+ <van-swipe-cell>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>鑹搧鏁�({{ info.umodel ? info.umodel.name : '' }})</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.qualified"
+ @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </van-swipe-cell>
+ <van-swipe-cell>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <div class="bg_list_item_num_item">
+ <span>涓嶈壇鏁�({{ info.umodel ? info.umodel.name : '' }})</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.undesirable"
+ @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </van-swipe-cell>
+ <van-swipe-cell v-if="produceFrom.undesirable > 0">
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item" @click="show = true">
+ <span>涓嶈壇椤�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="wulll" :style="{ color: from.defectiveName ? '#305ED5' : '' }">{{ from.defectiveName ?
+ from.defectiveName : '璁剧疆' }}</span>
+ <img src="@/assets/icon/ic_ar@2x.png" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </van-swipe-cell>
+ <!-- </template>
<template v-else>
<div class="kong">
<span>鏆傛棤鏁版嵁</span>
</div>
</template> -->
- </div>
- <div class="bg_plan" @click="TimeShow = true">
- <div class="bg_plan_label">
- <span>鎶ュ伐鏃堕暱</span>
- </div>
- <div class="bg_plan_label_val">
- <span :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '璇烽�夋嫨'}}</span>
- <img src="@/assets/icon/ic_ar@2x.png" alt="" />
- </div>
- </div>
- <div class="bg_list_item" v-if="arrType && arrType.length > 0">
- <div class="bg_list_item_top">
- <div class="bg_list_item_top_left">
- <div class="bg_list_item_top_left_x"></div>
- <span>宸ヨ祫缁╂晥</span>
- </div>
- </div>
- <div class="bg_list_item_h">
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <span>璁′欢鏂瑰紡</span>
- <div class="bg_list_item_num_item_list">
- <div :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 }}</div>
- <!-- <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">璁′欢</div>
+ </div>
+ <div class="bg_plan" @click="TimeShow = true">
+ <div class="bg_plan_label">
+ <span>鎶ュ伐鏃堕暱</span>
+ </div>
+ <div class="bg_plan_label_val">
+ <span :style="{ color: from.durationName ? '#333' : '' }">{{ from.durationName ? from.durationName : '璇烽�夋嫨' }}</span>
+ <img src="@/assets/icon/ic_ar@2x.png" alt="" />
+ </div>
+ </div>
+ <div class="bg_list_item" v-if="arrType && arrType.length > 0">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x"></div>
+ <span>宸ヨ祫缁╂晥</span>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>璁′欢鏂瑰紡</span>
+ <div class="bg_list_item_num_item_list">
+ <div :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 }}</div>
+ <!-- <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">璁′欢</div>
<div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 1">璁℃椂</div> -->
- </div>
- </div>
- </div>
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <span>宸ヨ祫鍗曚环</span>
- <div class="bg_list_item_num_item_sr">
- <span class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}鍏�/{{arrType[from.index].type == 0 ? '浠�' : '鏃�'}}</span>
- <!-- <span class="color1">{{infoBox.salary / 100}}鍏�/{{infoBox.type == 0 ? '浠�' : '鏃�'}}</span> -->
- </div>
- </div>
- </div>
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <span>棰勮宸ヨ祫</span>
- <div class="bg_list_item_num_item_sr">
- <span class="color1">{{expectedSalary}}鍏�</span>
- </div>
- </div>
- </div>
- <div class="bg_list_item_num">
- <div class="bg_list_item_num_item">
- <span>杈炬爣鐜�</span>
- <div class="bg_list_item_num_item_sr">
- <span class="color1">{{complianceRate}}%</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- <div class="bg_list_item">
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>宸ヨ祫鍗曚环</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ (arrType[from.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[from.index].type ==
+ 0 ? '浠�' : '鏃�' }}</span>
+ <!-- <span class="color1">{{infoBox.salary / 100}}鍏�/{{infoBox.type == 0 ? '浠�' : '鏃�'}}</span> -->
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>棰勮宸ヨ祫</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ expectedSalary }}鍏�</span>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>杈炬爣鐜�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ complianceRate }}%</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- <div class="bg_list_item">
<div class="bg_list_item_top">
<div class="bg_list_item_top_left">
<div class="bg_list_item_top_left_x"></div>
@@ -276,9 +285,9 @@
</div>
</template>
</div> -->
- </div>
- <div class="details_dj" v-if="typeView === 1">
- <!-- <div class="details_dj_title">
+ </div>
+ <div class="details_dj" v-if="typeView === 1">
+ <!-- <div class="details_dj_title">
<div class="details_dj_title_left">
<div class="details_x"></div>
<span>鐢熶骇鐐规</span>
@@ -288,1712 +297,1805 @@
<span>鎵嬪姩褰曞叆</span>
</div>
</div> -->
- <div class="details_dj_list">
- <van-list
- v-model:loading="loading"
- :finished="finished"
- finished-text="娌℃湁鏇村浜唦"
- @load="pageDJs">
- <van-swipe-cell v-for="(item, index) in djData" :key="index">
- <div class="details_dj_list_item">
- <span>{{item.attrName}}锛歿{item.val}}</span>
- <span>{{item.userName}} {{item.createTime}}</span>
- </div>
- <template #right>
- <van-button square type="danger" style="height: 100%;" @click="dele(item.id)" text="鍒犻櫎" />
- </template>
- </van-swipe-cell>
- </van-list>
+ <div class="details_dj_list">
+ <van-list v-model:loading="loading" :finished="finished" finished-text="娌℃湁鏇村浜唦" @load="pageDJs">
+ <van-swipe-cell v-for="(item, index) in djData" :key="index">
+ <div class="details_dj_list_item">
+ <span>{{ item.attrName }}锛歿{ item.val }}</span>
+ <span>{{ item.userName }} {{ item.createTime }}</span>
</div>
- </div>
- <!-- 鎶ュ伐鎸夐挳 -->
- <template v-if="info.status === 2 || info.procedureNeedcheck === 1">
- <div class="bh_zw"></div>
- <div class="bg_footer">
- <div class="bg_footer_submit" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
- <!-- proxy.$auth('h5:workorder:processRecord') && -->
- <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
- <span>鏂板鐐规</span>
- </div>
- </div>
- </template>
- <!-- 鎵爜缁勪欢 -->
- <v-ScanCode
- :openCode="openCode"
- :infos="['璇锋壂鎻忓伐瑁呯爜']"
- @closePopup="closePopup"
- @onDecode="onDecode" />
- <!-- 鎶ュ伐缁熻鏁版嵁 -->
- <van-popup v-model:show="statistics" round :closeable="true" position="bottom">
- <div class="tg">
- <div class="tg_header">璇风‘璁ゆ姤宸ヤ俊鎭�</div>
- <div class="tg_table">
- <div class="tg_table_header">
- <div class="tg_table_header_item">绫诲瀷</div>
- <div class="tg_table_header_item">鐗╂枡鍚嶇О</div>
- <!-- <div class="tg_table_header_item">宸ヨ鏁伴噺</div> -->
- <div class="tg_table_header_item">鐗╂枡鏁伴噺</div>
- </div>
- <div class="nr" v-if="statisticsData.length > 0">
- <div class="tg_table_nr" v-for="(item, index) in statisticsData" :key="index">
- <div class="tg_table_nr_item">{{item.name}}</div>
- <div class="tg_table_nr_item">{{item.materialName}}</div>
- <!-- <div class="tg_table_nr_item">{{item.gznum}}</div> -->
- <div class="tg_table_nr_item" :style="item.name === '宸ュ崟鏈姇鏂�' ? 'color: #DE5243' : ''">{{item.num}}</div>
- </div>
- </div>
- <div class="nr" v-else>
- <div class="tg_table_nr">
- <div class="tg_table_nr_item1">鏆傛棤鏁版嵁</div>
- </div>
- </div>
- </div>
- <div class="tg_footer">
- <button class="tg_footer_qr" @click="submitBG" v-if="proxy.$auth('h5:workorderoutput:confirm') && isSubmit">纭鎶ュ伐</button>
- <div class="tg_footer_fh" @click="gofh" v-else-if="!isSubmit">杩斿洖淇敼</div>
- </div>
- </div>
- </van-popup>
- <!-- 鏃堕棿 -->
- <van-popup v-model:show="TimeShow" round position="bottom" :style="{ height: '50%' }">
- <van-datetime-picker
- v-model="from.time"
- type="time"
- title="閫夋嫨鏃堕棿"
- @confirm="onConfirm2"
- @cancel="onCancel2"
- />
- </van-popup>
- <!-- 閫夋嫨涓嶈壇椤� -->
- <van-popup v-model:show="show" round position="bottom">
- <div class="bl">
- <div class="bl_head">
- <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" />
- <span>涓嶈壇椤�</span>
- <!-- <span>纭</span> -->
- <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" />
- </div>
- <div class="bl_list">
- <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
- <div class="bl_list_item_left">
- <input type="checkbox" :checked="item.active" />
- <span>{{ item.name }}</span>
- </div>
- <div class="bl_list_item_right">
- <input type="number" @click.stop v-model="item.num" placeholder="0" />
- </div>
- </div>
- </div>
- <div class="bl_footer" @click="onConfirm3">纭</div>
- </div>
- </van-popup>
+ <template #right>
+ <van-button square type="danger" style="height: 100%;" @click="dele(item.id)" text="鍒犻櫎" />
+ </template>
+ </van-swipe-cell>
+ </van-list>
+ </div>
</div>
+ <!-- 鎶ュ伐鎸夐挳 -->
+ <template v-if="info.status === 2 || info.procedureNeedcheck === 1">
+ <div class="bh_zw"></div>
+ <div class="bg_footer">
+ <div class="bg_footer_submit" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+ <!-- proxy.$auth('h5:workorder:processRecord') && -->
+ <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+ <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" />
+ <span>鏂板鐐规</span>
+ </div>
+ </div>
+ </template>
+ <!-- 鎵爜缁勪欢 -->
+ <v-ScanCode :openCode="openCode" :infos="['璇锋壂鎻忓伐瑁呯爜']" @closePopup="closePopup" @onDecode="onDecode" />
+ <!-- 鎶ュ伐缁熻鏁版嵁 -->
+ <van-popup v-model:show="statistics" round :closeable="true" position="bottom">
+ <div class="tg">
+ <div class="tg_header">璇风‘璁ゆ姤宸ヤ俊鎭�</div>
+ <div class="tg_table">
+ <div class="tg_table_header">
+ <div class="tg_table_header_item">绫诲瀷</div>
+ <div class="tg_table_header_item">鐗╂枡鍚嶇О</div>
+ <!-- <div class="tg_table_header_item">宸ヨ鏁伴噺</div> -->
+ <div class="tg_table_header_item">鐗╂枡鏁伴噺</div>
+ </div>
+ <div class="nr" v-if="statisticsData.length > 0">
+ <div class="tg_table_nr" v-for="(item, index) in statisticsData" :key="index">
+ <div class="tg_table_nr_item">{{ item.name }}</div>
+ <div class="tg_table_nr_item">{{ item.materialName }}</div>
+ <!-- <div class="tg_table_nr_item">{{item.gznum}}</div> -->
+ <div class="tg_table_nr_item" :style="item.name === '宸ュ崟鏈姇鏂�' ? 'color: #DE5243' : ''">{{ item.num }}</div>
+ </div>
+ </div>
+ <div class="nr" v-else>
+ <div class="tg_table_nr">
+ <div class="tg_table_nr_item1">鏆傛棤鏁版嵁</div>
+ </div>
+ </div>
+ </div>
+ <div class="tg_footer">
+ <button class="tg_footer_qr" @click="submitBG"
+ v-if="proxy.$auth('h5:workorderoutput:confirm') && isSubmit">纭鎶ュ伐</button>
+ <div class="tg_footer_fh" @click="gofh" v-else-if="!isSubmit">杩斿洖淇敼</div>
+ </div>
+ </div>
+ </van-popup>
+ <!-- 鏃堕棿 -->
+ <van-popup v-model:show="TimeShow" round position="bottom" :style="{ height: '50%' }">
+ <van-datetime-picker v-model="from.time" type="time" title="閫夋嫨鏃堕棿" @confirm="onConfirm2" @cancel="onCancel2" />
+ </van-popup>
+ <!-- 閫夋嫨涓嶈壇椤� -->
+ <van-popup v-model:show="show" round position="bottom">
+ <div class="bl">
+ <div class="bl_head">
+ <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" />
+ <span>涓嶈壇椤�</span>
+ <!-- <span>纭</span> -->
+ <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" />
+ </div>
+ <div class="bl_list">
+ <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+ <div class="bl_list_item_left">
+ <input type="checkbox" :checked="item.active" />
+ <span>{{ item.name }}</span>
+ </div>
+ <div class="bl_list_item_right">
+ <input type="number" @click.stop v-model="item.num" placeholder="0" />
+ </div>
+ </div>
+ </div>
+ <div class="bl_footer" @click="onConfirm3">纭</div>
+ </div>
+ </van-popup>
+ </div>
</template>
<script setup lang="ts">
- import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed, onActivated } from 'vue'
- import { useRouter, useRoute } from "vue-router"
- import { Dialog, Toast } from 'vant'
- import { REGULAR } from '@/utils/utils'
- import { categoryExtList, queryOne, queryList } from '@/apis/PlanningAPI'
- import {
- getBarcodeContent,
- queryById,
- getOrocessRecord,
- deleteCT,
- updateById,
- comfirmDone,
- comfirmDoneStandard,
- getListByCondition,
- allForStandard,
- pageDJ,
- deletedj,
- dealWorkorderRecordStandard,
- getWorkorderRecordListStandard
- } from '@/apis/WorkOrderAPI'
- import { QRCodeType } from '@/enum'
- const { proxy }: any = getCurrentInstance()
- const { $Bus } = getCurrentInstance().appContext.config.globalProperties
- import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue'
+import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed, onActivated } from 'vue'
+import { useRouter, useRoute } from "vue-router"
+import { Dialog, Toast } from 'vant'
+import { REGULAR } from '@/utils/utils'
+import { categoryExtList, queryOne, queryList } from '@/apis/PlanningAPI'
+import {
+ getBarcodeContent,
+ queryById,
+ getOrocessRecord,
+ deleteCT,
+ updateById,
+ comfirmDone,
+ comfirmDoneStandard,
+ getListByCondition,
+ allForStandard,
+ pageDJ,
+ deletedj,
+ dealWorkorderRecordStandard,
+ getWorkorderRecordListStandard
+} from '@/apis/WorkOrderAPI'
+import { QRCodeType } from '@/enum'
+const { proxy }: any = getCurrentInstance()
+const { $Bus } = getCurrentInstance().appContext.config.globalProperties
+import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue'
- const router = useRouter()
- const route = useRoute()
+const router = useRouter()
+const route = useRoute()
- let TimeShow = ref(false)
+let TimeShow = ref(false)
- let from: any = reactive({
- time: '',
- defective: [],
- defectiveName: '',
- durationName: '0灏忔椂0鍒嗛挓',
- duration: 0,
- index: 0
- })
+let from: any = reactive({
+ time: '',
+ defective: [],
+ defectiveName: '',
+ durationName: '0灏忔椂0鍒嗛挓',
+ duration: 0,
+ index: 0
+})
- let cate = ref([{ name: '鐢熶骇' }, { name: '鐐规' }])
- let typeView = ref(0)
+let cate = ref([{ name: '鐢熶骇' }, { name: '鐐规' }])
+let typeView = ref(0)
- const clickIten = (i: number) => {
- typeView.value = i
- if (i === 1) {
- finished.value = false
- page.capacity = 1
- pageDJs()
- }
+const clickIten = (i: number) => {
+ typeView.value = i
+ if (i === 1) {
+ finished.value = false
+ page.capacity = 1
+ pageDJs()
+ }
+}
+
+// 棰勮宸ヨ祫
+const expectedSalary = computed(() => {
+ if (arrType.value.length === 0) return 0;
+ // 鎸変欢璁$畻
+ if (arrType.value[from.index].type == 0) {
+ if (!produceFrom.qualified) return 0
+ if (arrType.value[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable)
+ return (total * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
+ } else {
+ return (Number(produceFrom.qualified) * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
}
+ } else {
+ if (!from.duration) return 0;
+ let h = (from.duration / 60 / 60).toFixed(2)
+ return (Number(h) * (arrType.value[from.index].salary / 10 / 10)).toFixed(2) || 0
+ }
+})
- // 棰勮宸ヨ祫
- const expectedSalary = computed(() => {
- if (arrType.value.length === 0) return 0;
- // 鎸変欢璁$畻
- if (arrType.value[from.index].type == 0) {
- if (!produceFrom.qualified) return 0
- if (arrType.value[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
- let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable)
- return (total * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
- } else {
- return (Number(produceFrom.qualified) * (arrType.value[from.index].salary / 100)).toFixed(2) || 0
- }
- } else {
- if (!from.duration) return 0;
- let h = (from.duration / 60 / 60).toFixed(2)
- return (Number(h) * (arrType.value[from.index].salary / 10 / 10)).toFixed(2) || 0
- }
+// 杈炬爣鐜�
+const complianceRate = computed(() => {
+ if (arrType.value.length === 0) return 0;
+ if (!produceFrom.qualified && !produceFrom.undesirable) return 0;
+ if (!from.duration) return 0;
+ if (!arrType.value[from.index].num) return 0;
+ // 鎸変欢璁$畻
+ // if (infoBox.value.type == 0) {
+ if (arrType.value[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let a = ((Number(produceFrom.qualified) + Number(produceFrom.undesirable)) / (from.duration / 3600)).toFixed(2)
+ let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
+ console.log(a)
+ console.log(b)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+ // return total * infoBox.value.salary;
+ } else {
+ let a = (produceFrom.qualified / (from.duration / 3600)).toFixed(2)
+ let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
+ console.log(a)
+ console.log(b)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // return Number(from.qualified) * infoBox.value.salary;
+ }
+ // } else {
+ // console.log('鎸夋椂闀�')
+ // }
+})
+
+const loading = ref(false);
+const finished = ref(false);
+let show = ref(false)
+// 鐐规鏁版嵁
+let djData: any = ref([])
+// 鍒嗛〉鏌ヨ鏁版嵁
+let page = reactive({
+ capacity: 10,
+ page: 0
+})
+
+let infoBox: any = ref(null) // 宸ヨ祫缁╂晥
+
+// 浜у嚭鍚堟牸/涓嶈壇
+let produceFrom: any = reactive({
+ qualifiedId: '',
+ qualified: '', // 鍚堟牸
+ undesirableId: '',
+ undesirable: '' // 涓嶈壇
+})
+
+let cateList: any = ref([]) // 涓嶈壇椤�
+
+// 璇︽儏鏁版嵁
+const info: any = ref({})
+
+// 鍒ゆ柇鏄惁鑳芥彁浜�
+let isSubmit: any = ref<boolean>(false)
+
+// 涓嶈壇鏄庣粏
+let undesirable: any = ref([])
+
+// 鎶ュ簾鏄庣粏
+let scrap: any = ref([])
+
+// 鎵爜绫诲瀷
+let type: any = ref('')
+
+let arrType: any = ref([])
+
+// 缁熻鏁版嵁
+let statisticsData: any = ref([
+ // {
+ // name: '宸ュ崟鎶曟枡',
+ // materialName: '榛勬矙',
+ // num: 0
+ // },
+ // {
+ // name: '宸ュ崟鍚堟牸浜у嚭',
+ // materialName: '榛勬矙',
+ // num: 0
+ // },
+ // {
+ // name: '宸ュ崟涓嶈壇浜у嚭',
+ // materialName: '榛勬矙',
+ // num: 0
+ // },
+ // {
+ // name: '宸ュ崟鏈姇鏂�',
+ // materialName: '榛勬矙',
+ // num: 0
+ // }
+])
+
+// 鎶曟枡鏁版嵁
+const feedingData: any = ref([])
+
+// 浜у嚭鏁版嵁
+const produceData: any = ref([])
+
+// 鎺у埗鎵爜鏄剧ず闅愯棌
+const openCode = ref<boolean>(false)
+
+// 鎺у埗鎶ュ伐缁熻
+const statistics = ref<boolean>(false)
+
+const changeChecked = (i: number) => {
+ cateList.value[i].active = !cateList.value[i].active
+}
+
+const getData = () => {
+ categoryExtList({
+ cateType: "3"
+ }).then(res => {
+ if (res.code === 200) {
+ res.data.forEach((item: any) => {
+ item.active = false
+ item.num = ''
+ })
+ cateList.value = res.data
+ }
+ })
+}
+
+const onConfirm2 = (e: string) => {
+ let h = Number(e.substring(0, 2))
+ let m = Number(e.substring(3, 5))
+ let s = 0
+ if (h > 0) {
+ s += h * 60 * 60
+ }
+ if (m > 0) {
+ s += m * 60
+ }
+ from.duration = s
+ from.durationName = `${h}灏忔椂${m}鍒嗛挓`
+ TimeShow.value = false
+}
+
+const onCancel2 = () => {
+ TimeShow.value = false
+}
+
+const onConfirm3 = () => {
+ let isOpen = false
+ cateList.value.forEach((item: any, index: number) => {
+ if (item.active) {
+ isOpen = true
+ }
+ })
+ if (!isOpen) return Toast('璇烽�夋嫨涓嶈壇椤�')
+ let arr: any = []
+ let total: any = 0
+ let name: any = ''
+ cateList.value.forEach((item: any, index: number) => {
+ if (item.active) {
+ if (item.num <= 0) {
+ return Toast('涓嶈壇鏁伴噺蹇呴』澶т簬0')
+ }
+ total = total += item.num
+ arr.push(item)
+ name += item.name + item.num + '锛�'
+ }
+ })
+ if (total !== produceFrom.undesirable) return Toast('涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟')
+ from.defective = arr
+ from.defectiveName = name
+ show.value = false
+}
+
+// 鎶曟枡缁熻
+const tlTotal = (): string => {
+ if (feedingData.value.length > 0) {
+ let total: number = 0
+ feedingData.value.forEach((element: any) => {
+ total = total + element.num
})
+ return `${total}`
+ }
+ return ''
+}
- // 杈炬爣鐜�
- const complianceRate = computed(() => {
- if (arrType.value.length === 0) return 0;
- if (!produceFrom.qualified && !produceFrom.undesirable) return 0;
- if (!from.duration) return 0;
- if (!arrType.value[from.index].num) return 0;
- // 鎸変欢璁$畻
- // if (infoBox.value.type == 0) {
- if (arrType.value[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
- let a = ((Number(produceFrom.qualified) + Number(produceFrom.undesirable)) / (from.duration / 3600)).toFixed(2)
- let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
- console.log(a)
- console.log(b)
- return ((Number(a) / Number(b)) * 100).toFixed(2)
- // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
- // return total * infoBox.value.salary;
- } else {
- let a = (produceFrom.qualified / (from.duration / 3600)).toFixed(2)
- let b = (arrType.value[from.index].num / (arrType.value[from.index].times / 3600)).toFixed(2)
- console.log(a)
- console.log(b)
- return ((Number(a) / Number(b)) * 100).toFixed(2)
- // return Number(from.qualified) * infoBox.value.salary;
- }
- // } else {
- // console.log('鎸夋椂闀�')
+// 淇敼浜у嚭
+const changeCC = (downType: string, num: number, recordId: string) => {
+ if (!num) return
+ if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
+ return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 })
+ }
+ if (num >= 0) {
+ from.defective = []
+ from.defectiveName = ''
+ // dealWorkorderRecordStandard({
+ // downType, num, recordId, workorderId: route.query.id
+ // }).then(res => {
+ // if (res.code === 200) {
+ // getOrocessRecordCC()
+ // }
+ // })
+ } else {
+ if (downType == 0) {
+ produceFrom.qualified = 0
+ } else {
+ produceFrom.undesirable = 0
+ }
+ Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘灏忎簬0', duration: 2000 })
+ }
+}
+
+// 璺宠浆鐐规
+const jumpdj = () => {
+ router.push({ name: 'spotCheck', query: { id: route.query.id } })
+}
+
+// 鍒犻櫎鐐规
+const dele = (id: string | number): void => {
+ deletedj(id)
+ .then(res => {
+ if (res.code === 200) {
+ djData.value = []
+ finished.value = false
+ page.page = 1
+ djData.value = []
+ pageDJs()
+ }
+ })
+}
+
+// 鐐规鏁版嵁
+const pageDJs = () => {
+ if (!finished.value) {
+ page.page = page.page + 1
+ loading.value = true
+ pageDJ({
+ capacity: page.capacity,
+ page: page.page,
+ model: {
+ workorderId: route.query.id
+ }
+ }).then(res => {
+ if (res.code === 200 && res.data && res.data.records.length !== 0) {
+ djData.value.push(...res.data.records)
+ } else {
+ finished.value = true
+ }
+ loading.value = false
+ }).catch(err => {
+ loading.value = false
+ finished.value = true
+ })
+ }
+}
+
+// 缁熻
+const ccTotal = (): string => {
+ if (produceData.value.length > 0) {
+ let total: number = 0
+ produceData.value.forEach((element: any) => {
+ total = total + element.num
+ })
+ return `${total}${produceData.value[0].company}`
+ }
+ return ''
+}
+
+// 缁熻
+const blTotal = (): string => {
+ if (undesirable.value.length > 0) {
+ let total: number = 0
+ undesirable.value.forEach((element: any) => {
+ total = total + element.num
+ })
+ return `${total}${undesirable.value[0].company}`
+ }
+ return ''
+}
+
+// 缁熻
+const bfTotal = (): string => {
+ if (scrap.value.length > 0) {
+ let total: number = 0
+ scrap.value.forEach((element: any) => {
+ total = total + element.num
+ })
+ return `${total}${scrap.value[0].company}`
+ }
+ return ''
+}
+
+// 鍒囨崲缁╂晥绫诲瀷
+const clickPerformanceType = (i: number) => {
+ from.index = i
+ arrType.value.forEach((item: any, index: number) => {
+ if (i === index) {
+ from.type = item.id
+ }
+ item.active = index === i
+ })
+}
+
+// 鍒犻櫎浜у嚭/鎶曟枡
+const deleItem = (id: any, type: string) => {
+ Dialog.confirm({
+ title: '鎻愮ず',
+ message: '纭畾鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
+ }).then(() => {
+ deleteCT(id)
+ .then(res => {
+ if (res.code === 200 && type === 'C') {
+ getOrocessRecordCC()
+ } else if (res.code === 200 && type === 'T') {
+ getOrocessRecords()
+ }
+ })
+ }).catch(() => {
+ // on cancel
+ })
+}
+
+// 璺宠浆鎵嬪姩浜у嚭
+const jumpCC = () => {
+ router.push({ name: 'manualOutput', query: { id: route.query.id, num: produceData.value.length > 0 ? produceData.value[0].num : '' } })
+}
+
+// 璺宠浆鎵嬪姩鎶曟枡
+const jumpTL = () => {
+ router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+}
+
+// 鍏抽棴鎵爜缁勪欢
+const closePopup = (): void => {
+ openCode.value = false
+}
+
+// 鑾峰彇鎵爜鍊�
+const onDecode = (data: string[]): void => {
+ getBarcodeContent({
+ barcode: data[0]
+ }).then(res => {
+ if (res.code === 200) {
+ if (res.data.barcodeType === QRCodeType.GZ) {
+ if (type.value === 'tl') { // 鎶曟枡鎿嶄綔
+ getListByCondition({ id: res.data.id })
+ .then(gz => {
+ if (gz.code === 200) {
+ if (gz.data[0].status !== 1) {
+ router.push({ name: 'codeScanningFeeding', query: { id: route.query.id, gzId: res.data.id } })
+ } else {
+ Toast.fail({ message: '鎵弿鐨勫伐瑁呯姸鎬佷笉鑳戒负绌�', duration: 2000 })
+ }
+ }
+ })
+ }
+ if (type.value === 'cc') { // 浜у嚭鎿嶄綔
+ router.push({ name: 'codeScanningOutput', query: { id: route.query.id, gzId: res.data.id } })
+ }
+ } else {
+ Toast({ message: '璇锋壂鎻忔纭殑绡瓙鐮�', duration: 2000 })
+ }
+ }
+ })
+ nextTick(() => {
+ openCode.value = false
+ })
+}
+
+// 璺宠浆鎵嬪姩鎶曟枡
+const jump = () => {
+ router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+}
+
+// 璺宠浆鎵爜鎶曟枡
+const jump1 = (types: string) => {
+ type.value = types
+ openCode.value = true
+}
+
+// 鏌ヨ宸ュ崟璇︽儏
+const queryByIds = () => {
+ queryById(route.query.id).then(res => {
+ if (res.code === 200) {
+ info.value = res.data
+ // 鑾峰彇宸ヨ祫缁╂晥鏁版嵁
+ queryList({
+ deleted: 0,
+ departId: res.data.factoryId,
+ materialId: res.data.materialId,
+ procedureId: res.data.procedureId
+ }).then((result: any) => {
+ if (result.code === 200) {
+ if (result.data && result.data.length > 0) {
+ result.data.forEach((item: any, index: number) => {
+ item.name = item.type == 0 ? '璁′欢' : '璁℃椂'
+ item.id = item.type
+ item.active = index == 0
+ })
+ arrType.value = result.data
+ } else {
+ arrType.value = []
+ }
+ // infoBox.value = result.data
+ }
+ // if (result.code === 200) {
+ // infoBox.value = result.data
// }
- })
-
- const loading = ref(false);
- const finished = ref(false);
- let show = ref(false)
- // 鐐规鏁版嵁
- let djData: any = ref([])
- // 鍒嗛〉鏌ヨ鏁版嵁
- let page = reactive({
- capacity: 10,
- page: 0
- })
-
- let infoBox: any = ref(null) // 宸ヨ祫缁╂晥
-
- // 浜у嚭鍚堟牸/涓嶈壇
- let produceFrom: any = reactive({
- qualifiedId: '',
- qualified: '', // 鍚堟牸
- undesirableId: '',
- undesirable: '' // 涓嶈壇
- })
-
- let cateList:any = ref([]) // 涓嶈壇椤�
-
- // 璇︽儏鏁版嵁
- const info: any = ref({})
-
- // 鍒ゆ柇鏄惁鑳芥彁浜�
- let isSubmit: any = ref<boolean>(false)
-
- // 涓嶈壇鏄庣粏
- let undesirable: any = ref([])
-
- // 鎶ュ簾鏄庣粏
- let scrap: any = ref([])
-
- // 鎵爜绫诲瀷
- let type: any = ref('')
-
- let arrType: any = ref([])
-
- // 缁熻鏁版嵁
- let statisticsData: any = ref([
- // {
- // name: '宸ュ崟鎶曟枡',
- // materialName: '榛勬矙',
- // num: 0
- // },
- // {
- // name: '宸ュ崟鍚堟牸浜у嚭',
- // materialName: '榛勬矙',
- // num: 0
- // },
- // {
- // name: '宸ュ崟涓嶈壇浜у嚭',
- // materialName: '榛勬矙',
- // num: 0
- // },
- // {
- // name: '宸ュ崟鏈姇鏂�',
- // materialName: '榛勬矙',
- // num: 0
- // }
- ])
-
- // 鎶曟枡鏁版嵁
- const feedingData: any = ref([])
-
- // 浜у嚭鏁版嵁
- const produceData: any = ref([])
-
- // 鎺у埗鎵爜鏄剧ず闅愯棌
- const openCode = ref<boolean>(false)
-
- // 鎺у埗鎶ュ伐缁熻
- const statistics = ref<boolean>(false)
-
- const changeChecked = (i: number) => {
- cateList.value[i].active = !cateList.value[i].active
+ })
}
+ })
+}
- const getData = () => {
- categoryExtList({
- cateType: "3"
- }).then(res => {
- if (res.code === 200) {
- res.data.forEach((item: any) => {
- item.active = false
- item.num = ''
- })
- cateList.value = res.data
- }
+// 鏌ヨ宸ュ崟鐢熶骇璁板綍---鎶曟枡
+const getOrocessRecords = () => {
+ feedingData.value = []
+ allForStandard({
+ workorderId: route.query.id,
+ type: 0
+ }).then(res => {
+ if (res.code === 200) {
+ feedingData.value = res.data
+ // res.data.forEach((item: any) => {
+ // feedingData.value.push({ id: item.id, company: item.umodel.name, gz: item.amodel.code, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+ // })
+ }
+ })
+}
+
+// 鏌ヨ宸ュ崟鐢熶骇璁板綍---浜у嚭
+const getOrocessRecordCC = () => {
+ produceData.value = []
+ undesirable.value = []
+ scrap.value = []
+ getWorkorderRecordListStandard({
+ workorderId: route.query.id
+ }).then(res => {
+ if (res.code === 200) {
+ if (res.data.length > 0) {
+ res.data.forEach((item: any) => {
+ if (item.doneType === 1) {
+ produceFrom.undesirable = item.num
+ produceFrom.undesirableId = item.id
+ } else {
+ produceFrom.qualified = item.num
+ produceFrom.qualifiedId = item.id
+ }
})
- }
+ }
+ // res.data.forEach((item: any) => {
+ // if (item.doneType === 0 || !item.doneType) { // 鍚堟牸 | 娣峰悎
- const onConfirm2 = (e: string) => {
- let h = Number(e.substring(0, 2))
- let m = Number(e.substring(3, 5))
- let s = 0
- if (h > 0) {
- s += h * 60 * 60
- }
- if (m > 0) {
- s += m * 60
- }
- from.duration = s
- from.durationName = `${h}灏忔椂${m}鍒嗛挓`
- TimeShow.value = false
+ // produceData.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+ // } else if (item.doneType === 1) { // 涓嶈壇
+ // undesirable.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+ // } else if (item.doneType === 2) { // 鎶ュ簾
+ // scrap.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
+ // }
+ // })
}
+ })
+}
- const onCancel2 = () => {
- TimeShow.value = false
+// 缂栬緫鎶曟枡/浜у嚭
+const change = (id: any, num: any, type: any, maxNum: number, item: object, unitAttribute: number): void => {
+ let obj: any = item
+ if (type === 'T') {
+ if (unitAttribute == 0 && num != '') {
+ if (!REGULAR.positiveInteger.test(num)) {
+ obj.num = obj.ynum
+ Toast({ message: '鍙兘杈撳叆姝f暣鏁�' })
+ return
+ }
}
+ if (unitAttribute == 1 && num != '') {
+ if (!REGULAR.number.test(num)) {
+ Toast({ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級' })
+ obj.num = obj.ynum
+ return
+ }
+ }
+ if (num > maxNum) {
+ obj.num = obj.ynum
+ Toast.fail({ message: '瓒呭嚭宸ヨ鎬绘暟' })
+ return
+ }
+ } else if (type === 'C' && num > info.value.planNum) {
+ obj.num = obj.ynum
+ Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺' })
+ return
+ }
+ updateById({ id: id, num: num }).then(res => {
+ if (res.code === 200 && type === 'T') {
+ getOrocessRecords()
+ } else if (res.code === 200 && type === 'C') {
+ // getOrocessRecordCC()
+ }
+ })
+}
- const onConfirm3 = () => {
- let isOpen = false
- cateList.value.forEach((item: any, index: number) => {
- if (item.active) {
- isOpen = true
- }
+// 纭鎶ュ伐
+const submit = () => {
+ if (info.value.bomType === 1) { // 鎷夊紡
+ console.log('鎷夊紡')
+ statisticsData.value = []
+ if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
+ Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
+ return
+ }
+ if (info.value.hasBom === 0) {
+ console.log('鏃燽om')
+ // let data: any = [
+ // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
+ // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
+ // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
+ // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
+ // ]
+ // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
+ // data[2].wlmc = undesirable.value[0].name
+ // data[2].gznum = data[2].gznum + undesirable.value.length
+ // }
+ // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
+ // data[2].wlmc = scrap.value[0].name
+ // data[2].gznum = data[2].gznum + scrap.value.length
+ // }
+ // let tl: number = 0
+ // let cc: number = 0
+ // let bl: number = 0
+ // undesirable.value.forEach((item: any) => { // 涓嶈壇
+ // bl = bl + item.num
+ // })
+ // scrap.value.forEach((item: any) => { // 鎶ュ簾
+ // bl = bl + item.num
+ // })
+ // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
+ // produceData.value.forEach((item: any) => { // 浜у嚭
+ // cc = cc + item.num
+ // })
+ // }
+ // feedingData.value.forEach((item: any) => { // 鎶曟枡
+ // tl = tl + item.num
+ // })
+ // data[0].wlnum = tl.toString() + info.value.umodel.name
+ // if (produceData.value.length > 0) {
+ // data[1].wlnum = cc.toString() + info.value.umodel.name
+ // }
+ // data[2].wlnum = bl.toString() + info.value.umodel.name
+ // let total: number = info.value.planNum - (Number(cc) + Number(bl))
+ // data[data.length - 1].wlnum = (info.value.planNum - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+ // if (total === 0) {
+ // isSubmit.value = true
+ // } else {
+ // isSubmit.value = false
+ // }
+
+ let arr: any = []
+ let tl = 0
+ let res = getGroupNum(feedingData.value)
+ for (let i in res) {
+ let num = 0
+ res[i].forEach((item: any) => {
+ num += item.num
})
- if (!isOpen) return Toast('璇烽�夋嫨涓嶈壇椤�')
- let arr: any = []
- let total: any = 0
- let name: any = ''
- cateList.value.forEach((item: any, index: number) => {
- if (item.active) {
- if (item.num <= 0) {
- return Toast('涓嶈壇鏁伴噺蹇呴』澶т簬0')
- }
- total = total += item.num
- arr.push(item)
- name += item.name + item.num + '锛�'
- }
+ arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + res[i][0].procedureName, num: num })
+ }
+ feedingData.value.forEach((item: any) => {
+ tl += item.num
+ })
+ statisticsData.value = [...statisticsData.value, ...arr]
+ statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+ statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+ statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: info.value.planNum - Number(produceFrom.qualified) - Number(produceFrom.undesirable) })
+ let total: number = info.value.planNum - (Number(produceFrom.qualified) + Number(produceFrom.undesirable))
+ if (total === 0) {
+ isSubmit.value = true
+ } else {
+ isSubmit.value = false
+ }
+ // if (Number(tl) <= info.value.planNum) {
+ // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑
+ // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+ // if (total === 0) {
+ // isSubmit.value = true
+ // } else {
+ // isSubmit.value = false
+ // }
+ // } else {
+ // isSubmit.value = false
+ // }
+ // statisticsData.value = data
+ } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌
+ console.log('鏈塨om')
+ // let cc: number = 0
+ // let bl: number = 0
+ // let newData: any = {}
+ // if (feedingData.value.length > 0) { // 鎶曟枡
+ // feedingData.value.forEach((e: any) => {
+ // if (Object.keys(newData).indexOf('' + e.name) === -1) {
+ // newData[e.name] = []
+ // }
+ // newData[e.name].push(e)
+ // })
+ // for (let key in newData) {
+ // let obj = { name: '宸ュ崟鎶曟枡', gznum: newData[key].length, wlmc: key, wlnum: 0, num: 0 }
+ // newData[key].forEach((item: any) => {
+ // obj.wlnum = obj.wlnum + item.num
+ // obj.num = item.num
+ // })
+ // obj.wlnum = obj.wlnum.toString() + newData[key][0].company as never
+ // statisticsData.value.push(obj)
+ // }
+ // }
+ // if (produceData.value.length > 0) { // 浜у嚭
+ // produceData.value.forEach((item: any) => {
+ // cc = cc + item.num
+ // })
+ // statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: info.value.mmodel.name, wlnum: cc + info.value.umodel.name, num: cc })
+ // }
+ // if (undesirable.value.length > 0 || scrap.value.length > 0) { // 涓嶈壇/鎶ュ簾
+ // undesirable.value.forEach((item: any) => {
+ // bl = bl + item.num
+ // })
+ // scrap.value.forEach((item: any) => {
+ // bl = bl + item.num
+ // })
+ // statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', gznum: undesirable.value.length + scrap.value.length, wlmc: info.value.mmodel.name, wlnum: bl + info.value.umodel.name, num: bl })
+ // }
+ // let totaltl: number = 0
+ // let totalcc: number = 0
+ // let totalbl: number = 0
+ // statisticsData.value.forEach((item: any) => {
+ // if (item.name === '宸ュ崟鎶曟枡') {
+ // totaltl = totaltl + item.num
+ // } else if (item.name === '宸ュ崟鍚堟牸浜у嚭') {
+ // totalcc = totalcc + item.num
+ // } else if (item.name === '宸ュ崟涓嶈壇浜у嚭') {
+ // totalbl = totalbl + item.num
+ // }
+ // })
+ // isSubmit.value = totalcc + totalbl <= info.value.planNum;
+ let arr: any = []
+ let tl = 0
+ let res = getGroupNum(feedingData.value)
+ for (let i in res) {
+ let num = 0
+ res[i].forEach((item: any) => {
+ num += item.num
})
- if (total !== produceFrom.undesirable) return Toast('涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟')
- from.defective = arr
- from.defectiveName = name
- show.value = false
+ arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
+ }
+ feedingData.value.forEach((item: any) => {
+ tl += item.num
+ })
+ statisticsData.value = [...statisticsData.value, ...arr]
+ statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+ statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+ isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
}
-
- // 鎶曟枡缁熻
- const tlTotal = (): string => {
- if (feedingData.value.length > 0) {
- let total: number = 0
- feedingData.value.forEach((element: any) => {
- total = total + element.num
- })
- return `${total}`
- }
- return ''
+ } else {
+ console.log('鎺ㄥ紡')
+ if (feedingData.value.length === 0) {
+ Toast.fail({ message: '鎶曟枡鏄庣粏涓嶈兘涓虹┖' })
+ return
}
-
- // 淇敼浜у嚭
- const changeCC = (downType: string, num: number, recordId: string) => {
- if (!num) return
- if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
- return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 })
- }
- if (num >= 0) {
- from.defective = []
- from.defectiveName = ''
- // dealWorkorderRecordStandard({
- // downType, num, recordId, workorderId: route.query.id
- // }).then(res => {
- // if (res.code === 200) {
- // getOrocessRecordCC()
- // }
- // })
+ if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
+ Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
+ return
+ }
+ statisticsData.value = []
+ if (info.value.hasBom === 0) {
+ console.log('鏃燽om')
+ // let data: any = [
+ // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
+ // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
+ // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
+ // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
+ // ]
+ // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
+ // data[2].wlmc = undesirable.value[0].name
+ // data[2].gznum = data[2].gznum + undesirable.value.length
+ // }
+ // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
+ // data[2].wlmc = scrap.value[0].name
+ // data[2].gznum = data[2].gznum + scrap.value.length
+ // }
+ // let tl = 0
+ // let cc = 0
+ // let bl = 0
+ // undesirable.value.forEach((item: any) => { // 涓嶈壇
+ // bl = bl + item.num
+ // })
+ // scrap.value.forEach((item: any) => { // 鎶ュ簾
+ // bl = bl + item.num
+ // })
+ // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
+ // produceData.value.forEach((item: any) => { // 浜у嚭
+ // cc = cc + item.num
+ // })
+ // }
+ // feedingData.value.forEach((item: any) => { // 鎶曟枡
+ // tl = tl + item.num
+ // })
+ // data[0].wlnum = tl.toString() + info.value.umodel.name
+ // if (produceData.value.length > 0) {
+ // data[1].wlnum = cc.toString() + info.value.umodel.name
+ // }
+ // data[2].wlnum = bl.toString() + info.value.umodel.name
+ // if (Number(tl) <= info.value.planNum) {
+ // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑
+ // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
+ // if (total === 0) {
+ // isSubmit.value = true
+ // } else {
+ // isSubmit.value = false
+ // }
+ // } else {
+ // isSubmit.value = false
+ // }
+ // statisticsData.value = data
+ let arr: any = []
+ let tl = 0
+ let res = getGroupNum(feedingData.value)
+ for (let i in res) {
+ let num = 0
+ res[i].forEach((item: any) => {
+ num += item.num
+ })
+ arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + '-' + res[i][0].procedureName, num: num })
+ }
+ feedingData.value.forEach((item: any) => {
+ tl += item.num
+ })
+ statisticsData.value = [...statisticsData.value, ...arr]
+ statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+ statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+ if (Number(tl) <= info.value.planNum) {
+ let total: number = Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable) // 鏄惁鏈変綑
+ statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: (Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable)).toFixed(2) })
+ if (total === 0) {
+ isSubmit.value = true
} else {
- if (downType == 0) {
- produceFrom.qualified = 0
- } else {
- produceFrom.undesirable = 0
- }
- Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘灏忎簬0', duration: 2000 })
+ isSubmit.value = false
}
- }
-
- // 璺宠浆鐐规
- const jumpdj = () => {
- router.push({ name: 'spotCheck', query: { id: route.query.id } })
- }
-
- // 鍒犻櫎鐐规
- const dele = (id: string | number): void => {
- deletedj(id)
- .then(res => {
- if (res.code === 200) {
- djData.value = []
- finished.value = false
- page.page = 1
- djData.value = []
- pageDJs()
- }
- })
- }
-
- // 鐐规鏁版嵁
- const pageDJs = () => {
- if (!finished.value) {
- page.page = page.page + 1
- loading.value = true
- pageDJ({
- capacity: page.capacity,
- page: page.page,
- model: {
- workorderId: route.query.id
- }
- }).then(res => {
- if (res.code === 200 && res.data && res.data.records.length !== 0) {
- djData.value.push(...res.data.records)
- } else {
- finished.value = true
- }
- loading.value = false
- }).catch(err => {
- loading.value = false
- finished.value = true
- })
- }
- }
-
- // 缁熻
- const ccTotal = (): string => {
- if (produceData.value.length > 0) {
- let total: number = 0
- produceData.value.forEach((element: any) => {
- total = total + element.num
- })
- return `${total}${produceData.value[0].company}`
- }
- return ''
- }
-
- // 缁熻
- const blTotal = (): string => {
- if (undesirable.value.length > 0) {
- let total: number = 0
- undesirable.value.forEach((element: any) => {
- total = total + element.num
- })
- return `${total}${undesirable.value[0].company}`
- }
- return ''
- }
-
- // 缁熻
- const bfTotal = (): string => {
- if (scrap.value.length > 0) {
- let total: number = 0
- scrap.value.forEach((element: any) => {
- total = total + element.num
- })
- return `${total}${scrap.value[0].company}`
- }
- return ''
- }
-
- // 鍒囨崲缁╂晥绫诲瀷
- const clickPerformanceType = (i: number) => {
- from.index = i
- arrType.value.forEach((item: any, index: number) => {
- if (i === index) {
- from.type = item.id
- }
- item.active = index === i
+ } else {
+ isSubmit.value = false
+ }
+ } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌
+ console.log('鏈塨om')
+ let arr: any = []
+ let tl = 0
+ let res = getGroupNum(feedingData.value)
+ for (let i in res) {
+ let num = 0
+ res[i].forEach((item: any) => {
+ num += item.num
})
+ arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
+ }
+ feedingData.value.forEach((item: any) => {
+ tl += item.num
+ })
+ statisticsData.value = [...statisticsData.value, ...arr]
+ statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
+ statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
+ // isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
+ isSubmit.value = true
}
+ }
+ statistics.value = true
+}
- // 鍒犻櫎浜у嚭/鎶曟枡
- const deleItem = (id: any, type: string) => {
- Dialog.confirm({
- title: '鎻愮ず',
- message: '纭畾鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
- }).then(() => {
- deleteCT(id)
- .then(res => {
- if (res.code === 200 && type === 'C') {
- getOrocessRecordCC()
- } else if (res.code === 200 && type === 'T') {
- getOrocessRecords()
- }
- })
- }).catch(() => {
- // on cancel
- })
+// 鏍规嵁鏌愪釜瀛楁杩涜鍒嗙粍
+const getGroupNum = (arr: any) => {
+ let newArry: any = {};
+ for (let i = 0; i < arr.length; i++) {
+ if (newArry[arr[i].materialName]) {
+ newArry[arr[i].materialName].push(arr[i])
+ } else {
+ newArry[arr[i].materialName] = [arr[i]]
}
+ }
+ return newArry;
+}
- // 璺宠浆鎵嬪姩浜у嚭
- const jumpCC = () => {
- router.push({ name: 'manualOutput', query: { id: route.query.id, num: produceData.value.length > 0 ? produceData.value[0].num : '' } })
+// 杩斿洖淇敼
+const gofh = () => {
+ statistics.value = false
+}
+
+// 纭鎶ュ伐
+const submitBG = () => {
+ // if (!from.duration || from.duration <= 0) {
+ // return Toast('鎶ュ伐鏃堕暱涓嶈兘涓虹┖')
+ // }
+ let createUnqualifiedDTOList = from.defective.map((item: any) => {
+ return {
+ categoryId: item.id,
+ unQualifiedNum: item.num
}
-
- // 璺宠浆鎵嬪姩鎶曟枡
- const jumpTL = () => {
- router.push({ name: 'manualFeeding', query: { id: route.query.id } })
+ })
+ let createWorkorderRecordDTO = {
+ workorderId: route.query.id,
+ duration: from.duration ? from.duration : 0,
+ qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0,
+ unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0
+ }
+ // id: route.query.id
+ comfirmDoneStandard({
+ createUnqualifiedDTOList,
+ createWorkorderRecordDTO
+ }).then(res => {
+ if (res.code === 200) {
+ Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 })
+ setTimeout(() => {
+ router.go(-2)
+ }, 2000)
}
+ })
+}
- // 鍏抽棴鎵爜缁勪欢
- const closePopup = (): void => {
- openCode.value = false
- }
+onActivated(() => {
+ // $Bus.on('callback1', (res: any)=>{
+ // console.log(res)
+ // if (res == 1) {
+ // djData.value = []
+ // finished.value = false
+ // page.page = 1
+ // djData.value = []
+ // pageDJs()
+ // }
+ // })
+ // queryByIds()
+ // getOrocessRecords()
+ // getData()
+})
- // 鑾峰彇鎵爜鍊�
- const onDecode = (data: string[]): void => {
- getBarcodeContent({
- barcode: data[0]
- }).then(res => {
- if (res.code === 200) {
- if (res.data.barcodeType === QRCodeType.GZ) {
- if (type.value === 'tl') { // 鎶曟枡鎿嶄綔
- getListByCondition({ id: res.data.id })
- .then(gz => {
- if (gz.code === 200) {
- if (gz.data[0].status !== 1) {
- router.push({ name: 'codeScanningFeeding', query: { id: route.query.id, gzId: res.data.id } })
- } else {
- Toast.fail({ message: '鎵弿鐨勫伐瑁呯姸鎬佷笉鑳戒负绌�', duration: 2000 })
- }
- }
- })
- }
- if (type.value === 'cc') { // 浜у嚭鎿嶄綔
- router.push({ name: 'codeScanningOutput', query: { id: route.query.id, gzId: res.data.id } })
- }
- } else {
- Toast({ message: '璇锋壂鎻忔纭殑绡瓙鐮�', duration: 2000 })
- }
- }
- })
- nextTick(() => {
- openCode.value = false
- })
- }
+onMounted(() => {
+ // $Bus.on('callback1', (res: any)=>{
+ // if (res == 1) {
+ // djData.value = []
+ // finished.value = false
+ // page.page = 1
+ // djData.value = []
+ // pageDJs()
+ // }
+ // })
+ // pageDJs()
- // 璺宠浆鎵嬪姩鎶曟枡
- const jump = () => {
- router.push({ name: 'manualFeeding', query: { id: route.query.id } })
- }
+ queryByIds()
+ getOrocessRecords()
+ getData()
- // 璺宠浆鎵爜鎶曟枡
- const jump1 = (types: string) => {
- type.value = types
- openCode.value = true
- }
-
- // 鏌ヨ宸ュ崟璇︽儏
- const queryByIds = () => {
- queryById(route.query.id).then(res => {
- if (res.code === 200) {
- info.value = res.data
- // 鑾峰彇宸ヨ祫缁╂晥鏁版嵁
- queryList({
- deleted: 0,
- departId: res.data.factoryId,
- materialId: res.data.materialId,
- procedureId: res.data.procedureId
- }).then((result: any) => {
- if (result.code === 200) {
- if (result.data && result.data.length > 0) {
- result.data.forEach((item: any, index: number) => {
- item.name = item.type == 0 ? '璁′欢' : '璁℃椂'
- item.id = item.type
- item.active = index == 0
- })
- arrType.value = result.data
- } else {
- arrType.value = []
- }
- // infoBox.value = result.data
- }
- // if (result.code === 200) {
- // infoBox.value = result.data
- // }
- })
- }
- })
- }
-
- // 鏌ヨ宸ュ崟鐢熶骇璁板綍---鎶曟枡
- const getOrocessRecords = () => {
- feedingData.value = []
- allForStandard({
- workorderId: route.query.id,
- type: 0
- }).then(res => {
- if (res.code === 200) {
- feedingData.value = res.data
- // res.data.forEach((item: any) => {
- // feedingData.value.push({ id: item.id, company: item.umodel.name, gz: item.amodel.code, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
- // })
- }
- })
- }
-
- // 鏌ヨ宸ュ崟鐢熶骇璁板綍---浜у嚭
- const getOrocessRecordCC = () => {
- produceData.value = []
- undesirable.value = []
- scrap.value = []
- getWorkorderRecordListStandard({
- workorderId: route.query.id
- }).then(res => {
- if (res.code === 200) {
- if (res.data.length > 0) {
- res.data.forEach((item: any) => {
- if (item.doneType === 1) {
- produceFrom.undesirable = item.num
- produceFrom.undesirableId = item.id
- } else {
- produceFrom.qualified = item.num
- produceFrom.qualifiedId = item.id
- }
- })
- }
- // res.data.forEach((item: any) => {
- // if (item.doneType === 0 || !item.doneType) { // 鍚堟牸 | 娣峰悎
-
- // produceData.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
- // } else if (item.doneType === 1) { // 涓嶈壇
- // undesirable.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
- // } else if (item.doneType === 2) { // 鎶ュ簾
- // scrap.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num })
- // }
- // })
- }
- })
- }
-
- // 缂栬緫鎶曟枡/浜у嚭
- const change = (id: any, num: any, type: any, maxNum: number, item: object, unitAttribute: number): void => {
- let obj: any = item
- if (type === 'T') {
- if (unitAttribute == 0 && num != '') {
- if(!REGULAR.positiveInteger.test(num)){
- obj.num = obj.ynum
- Toast({ message: '鍙兘杈撳叆姝f暣鏁�' })
- return
- }
- }
- if (unitAttribute == 1 && num != '') {
- if(!REGULAR.number.test(num)){
- Toast({ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級' })
- obj.num = obj.ynum
- return
- }
- }
- if (num > maxNum) {
- obj.num = obj.ynum
- Toast.fail({ message: '瓒呭嚭宸ヨ鎬绘暟' })
- return
- }
- } else if (type === 'C' && num > info.value.planNum) {
- obj.num = obj.ynum
- Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺' })
- return
- }
- updateById({ id: id, num: num }).then(res => {
- if (res.code === 200 && type === 'T') {
- getOrocessRecords()
- } else if (res.code === 200 && type === 'C') {
- // getOrocessRecordCC()
- }
- })
- }
-
- // 纭鎶ュ伐
- const submit = () => {
- if (info.value.bomType === 1) { // 鎷夊紡
- console.log('鎷夊紡')
- statisticsData.value = []
- if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
- Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
- return
- }
- if (info.value.hasBom === 0) {
- console.log('鏃燽om')
- // let data: any = [
- // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
- // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
- // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
- // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
- // ]
- // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
- // data[2].wlmc = undesirable.value[0].name
- // data[2].gznum = data[2].gznum + undesirable.value.length
- // }
- // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
- // data[2].wlmc = scrap.value[0].name
- // data[2].gznum = data[2].gznum + scrap.value.length
- // }
- // let tl: number = 0
- // let cc: number = 0
- // let bl: number = 0
- // undesirable.value.forEach((item: any) => { // 涓嶈壇
- // bl = bl + item.num
- // })
- // scrap.value.forEach((item: any) => { // 鎶ュ簾
- // bl = bl + item.num
- // })
- // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
- // produceData.value.forEach((item: any) => { // 浜у嚭
- // cc = cc + item.num
- // })
- // }
- // feedingData.value.forEach((item: any) => { // 鎶曟枡
- // tl = tl + item.num
- // })
- // data[0].wlnum = tl.toString() + info.value.umodel.name
- // if (produceData.value.length > 0) {
- // data[1].wlnum = cc.toString() + info.value.umodel.name
- // }
- // data[2].wlnum = bl.toString() + info.value.umodel.name
- // let total: number = info.value.planNum - (Number(cc) + Number(bl))
- // data[data.length - 1].wlnum = (info.value.planNum - Number(cc) - Number(bl)).toString() + info.value.umodel.name
- // if (total === 0) {
- // isSubmit.value = true
- // } else {
- // isSubmit.value = false
- // }
-
- let arr: any = []
- let tl = 0
- let res = getGroupNum(feedingData.value)
- for (let i in res) {
- let num = 0
- res[i].forEach((item: any) => {
- num += item.num
- })
- arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + res[i][0].procedureName, num: num })
- }
- feedingData.value.forEach((item: any) => {
- tl += item.num
- })
- statisticsData.value = [...statisticsData.value, ...arr]
- statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
- statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
- statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: info.value.planNum - Number(produceFrom.qualified) - Number(produceFrom.undesirable) })
- let total: number = info.value.planNum - (Number(produceFrom.qualified) + Number(produceFrom.undesirable))
- if (total === 0) {
- isSubmit.value = true
- } else {
- isSubmit.value = false
- }
- // if (Number(tl) <= info.value.planNum) {
- // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑
- // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
- // if (total === 0) {
- // isSubmit.value = true
- // } else {
- // isSubmit.value = false
- // }
- // } else {
- // isSubmit.value = false
- // }
- // statisticsData.value = data
- } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌
- console.log('鏈塨om')
- // let cc: number = 0
- // let bl: number = 0
- // let newData: any = {}
- // if (feedingData.value.length > 0) { // 鎶曟枡
- // feedingData.value.forEach((e: any) => {
- // if (Object.keys(newData).indexOf('' + e.name) === -1) {
- // newData[e.name] = []
- // }
- // newData[e.name].push(e)
- // })
- // for (let key in newData) {
- // let obj = { name: '宸ュ崟鎶曟枡', gznum: newData[key].length, wlmc: key, wlnum: 0, num: 0 }
- // newData[key].forEach((item: any) => {
- // obj.wlnum = obj.wlnum + item.num
- // obj.num = item.num
- // })
- // obj.wlnum = obj.wlnum.toString() + newData[key][0].company as never
- // statisticsData.value.push(obj)
- // }
- // }
- // if (produceData.value.length > 0) { // 浜у嚭
- // produceData.value.forEach((item: any) => {
- // cc = cc + item.num
- // })
- // statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: info.value.mmodel.name, wlnum: cc + info.value.umodel.name, num: cc })
- // }
- // if (undesirable.value.length > 0 || scrap.value.length > 0) { // 涓嶈壇/鎶ュ簾
- // undesirable.value.forEach((item: any) => {
- // bl = bl + item.num
- // })
- // scrap.value.forEach((item: any) => {
- // bl = bl + item.num
- // })
- // statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', gznum: undesirable.value.length + scrap.value.length, wlmc: info.value.mmodel.name, wlnum: bl + info.value.umodel.name, num: bl })
- // }
- // let totaltl: number = 0
- // let totalcc: number = 0
- // let totalbl: number = 0
- // statisticsData.value.forEach((item: any) => {
- // if (item.name === '宸ュ崟鎶曟枡') {
- // totaltl = totaltl + item.num
- // } else if (item.name === '宸ュ崟鍚堟牸浜у嚭') {
- // totalcc = totalcc + item.num
- // } else if (item.name === '宸ュ崟涓嶈壇浜у嚭') {
- // totalbl = totalbl + item.num
- // }
- // })
- // isSubmit.value = totalcc + totalbl <= info.value.planNum;
- let arr: any = []
- let tl = 0
- let res = getGroupNum(feedingData.value)
- for (let i in res) {
- let num = 0
- res[i].forEach((item: any) => {
- num += item.num
- })
- arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
- }
- feedingData.value.forEach((item:any) => {
- tl += item.num
- })
- statisticsData.value = [...statisticsData.value, ...arr]
- statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
- statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
- isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
- }
- } else {
- console.log('鎺ㄥ紡')
- if (feedingData.value.length === 0) {
- Toast.fail({ message: '鎶曟枡鏄庣粏涓嶈兘涓虹┖' })
- return
- }
- if (produceFrom.qualified <= 0 && produceFrom.undesirable <= 0) {
- Toast.fail({ message: '浜у嚭鏄庣粏涓嶈兘涓虹┖' })
- return
- }
- statisticsData.value = []
- if (info.value.hasBom === 0) {
- console.log('鏃燽om')
- // let data: any = [
- // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 },
- // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 },
- // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 },
- // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }
- // ]
- // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
- // data[2].wlmc = undesirable.value[0].name
- // data[2].gznum = data[2].gznum + undesirable.value.length
- // }
- // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹�
- // data[2].wlmc = scrap.value[0].name
- // data[2].gznum = data[2].gznum + scrap.value.length
- // }
- // let tl = 0
- // let cc = 0
- // let bl = 0
- // undesirable.value.forEach((item: any) => { // 涓嶈壇
- // bl = bl + item.num
- // })
- // scrap.value.forEach((item: any) => { // 鎶ュ簾
- // bl = bl + item.num
- // })
- // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑�
- // produceData.value.forEach((item: any) => { // 浜у嚭
- // cc = cc + item.num
- // })
- // }
- // feedingData.value.forEach((item: any) => { // 鎶曟枡
- // tl = tl + item.num
- // })
- // data[0].wlnum = tl.toString() + info.value.umodel.name
- // if (produceData.value.length > 0) {
- // data[1].wlnum = cc.toString() + info.value.umodel.name
- // }
- // data[2].wlnum = bl.toString() + info.value.umodel.name
- // if (Number(tl) <= info.value.planNum) {
- // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑
- // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name
- // if (total === 0) {
- // isSubmit.value = true
- // } else {
- // isSubmit.value = false
- // }
- // } else {
- // isSubmit.value = false
- // }
- // statisticsData.value = data
- let arr: any = []
- let tl = 0
- let res = getGroupNum(feedingData.value)
- for (let i in res) {
- let num = 0
- res[i].forEach((item: any) => {
- num += item.num
- })
- arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + '-' + res[i][0].procedureName, num: num })
- }
- feedingData.value.forEach((item:any) => {
- tl += item.num
- })
- statisticsData.value = [...statisticsData.value, ...arr]
- statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
- statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
- if (Number(tl) <= info.value.planNum) {
- let total: number = Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable) // 鏄惁鏈変綑
- statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: (Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable)).toFixed(2) })
- if (total === 0) {
- isSubmit.value = true
- } else {
- isSubmit.value = false
- }
- } else {
- isSubmit.value = false
- }
- } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌
- console.log('鏈塨om')
- let arr: any = []
- let tl = 0
- let res = getGroupNum(feedingData.value)
- for (let i in res) {
- let num = 0
- res[i].forEach((item: any) => {
- num += item.num
- })
- arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num })
- }
- feedingData.value.forEach((item:any) => {
- tl += item.num
- })
- statisticsData.value = [...statisticsData.value, ...arr]
- statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified })
- statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable })
- // isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum;
- isSubmit.value = true
- }
- }
- statistics.value = true
- }
-
- // 鏍规嵁鏌愪釜瀛楁杩涜鍒嗙粍
- const getGroupNum = (arr: any) => {
- let newArry: any = {};
- for (let i = 0; i < arr.length; i++) {
- if (newArry[arr[i].materialName]) {
- newArry[arr[i].materialName].push(arr[i])
- } else {
- newArry[arr[i].materialName] = [arr[i]]
- }
- }
- return newArry;
- }
-
- // 杩斿洖淇敼
- const gofh = () => {
- statistics.value = false
- }
-
- // 纭鎶ュ伐
- const submitBG = () => {
- // if (!from.duration || from.duration <= 0) {
- // return Toast('鎶ュ伐鏃堕暱涓嶈兘涓虹┖')
- // }
- let createUnqualifiedDTOList = from.defective.map((item: any) => {
- return {
- categoryId: item.id,
- unQualifiedNum: item.num
- }
- })
- let createWorkorderRecordDTO = {
- workorderId: route.query.id,
- duration: from.duration ? from.duration : 0,
- qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0,
- unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0
- }
- // id: route.query.id
- comfirmDoneStandard({
- createUnqualifiedDTOList,
- createWorkorderRecordDTO
- }).then(res => {
- if (res.code === 200) {
- Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 })
- setTimeout(() => {
- router.go(-2)
- }, 2000)
- }
- })
- }
-
- onActivated(() => {
- // $Bus.on('callback1', (res: any)=>{
- // console.log(res)
- // if (res == 1) {
- // djData.value = []
- // finished.value = false
- // page.page = 1
- // djData.value = []
- // pageDJs()
- // }
- // })
- // queryByIds()
- // getOrocessRecords()
- // getData()
- })
-
- onMounted(() => {
- // $Bus.on('callback1', (res: any)=>{
- // if (res == 1) {
- // djData.value = []
- // finished.value = false
- // page.page = 1
- // djData.value = []
- // pageDJs()
- // }
- // })
- // pageDJs()
-
- queryByIds()
- getOrocessRecords()
- getData()
-
- // getOrocessRecordCC()
- })
+ // getOrocessRecordCC()
+})
</script>
<style lang="scss" scoped>
- .bg {
- width: 100%;
- /*height: 100%;*/
- position: absolute;
- background: #F7F7F7;
- .bg_plan {
- width: 100%;
- // height: 98px;
- padding: 30px;
- box-sizing: border-box;
- background: #FFFFFF;
- margin-bottom: 40px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- span {
- font-size: 30px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #222222;
- b {
- color: red;
- }
- }
- .bg_plan_nr {
- display: flex;
- flex-direction: column;
- span {
- font-size: 24px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #666666;
- margin-top: 20px;
- &:first-child {
- font-size: 32px;
- font-family: PingFangSC-Medium, PingFang SC;
- font-weight: 500;
- color: #333333;
- margin-top: 0 !important;
- }
- }
- }
- .bg_plan_label_val {
- display: flex;
- align-items: center;
- span {
- font-size: 28px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #999999;
- }
- img {
- width: 12px;
- height: 24px;
- margin-left: 20px;
- }
- }
- }
- .details_cz {
- width: 100%;
- padding: 30px;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .details_cz_sdtl {
- width: 330px;
- height: 76px;
- background: #FFFFFF;
- border-radius: 36px;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 14px;
- }
- span {
- font-size: 26px;
- font-weight: 400;
- color: #222222;
- }
- }
- .details_cz_smtl {
- /*width: 330px;*/
- flex: 1;
- height: 76px;
- background: $nav-color;
- border-radius: 36px;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 14px;
- }
- span {
- font-size: 26px;
- font-weight: 400;
- color: #ffffff;
- }
- }
- }
- .bg_cate {
- width: 100%;
- height: 88px;
- background: #FFFFFF;
- margin-top: 20px;
- display: flex;
- align-items: center;
- .active {
- box-sizing: border-box;
- color: #305ED5 !important;
- border-bottom: 2PX solid #305ED5;
- }
- .bg_cate_item {
- flex: 1;
- height: 100%;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 30px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #555555;
- }
- }
- .bg_list {
- width: 100%;
- display: flex;
- flex-direction: column;
- margin-top: 30px;
- .bg_list_item {
- display: flex;
- flex-direction: column;
- margin-bottom: 40px;
- .kong {
- text-align: center;
- padding: 30px 0;
- background: #ffffff;
- font-size: 25px;
- span {
- color: #474747;
- }
- }
- .bg_list_item_top {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding-left: 30px;
- padding-right: 30px;
- margin-bottom: 30px;
- .bg_list_item_top_left {
- display: flex;
- align-items: center;
- .left {
- margin-left: 12px;
- font-size: 28px;
- }
- .warning {
- width: 8px;
- height: 30px;
- border-radius: 2px;
- margin-right: 12px;
- background: $nav-stateColor5 !important;
- }
- .error {
- width: 8px;
- height: 30px;
- border-radius: 2px;
- margin-right: 12px;
- background: $nav-stateColor4 !important;
- }
- .bg_list_item_top_left_x {
- width: 8px;
- height: 30px;
- background: $nav-color;
- border-radius: 2px;
- margin-right: 12px;
- }
- span {
- font-size: 32px;
- font-weight: 500;
- color: #222222;
- display: flex;
- align-items: center;
- }
- }
- .bg_list_item_top_right {
- display: flex;
- align-items: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 12px;
- }
- span {
- font-size: 28px;
- font-weight: 400;
- color: $nav-color;
- }
- }
- }
- .bg_list_item_h {
- width: 100%;
- padding: 0 30px;
- box-sizing: border-box;
- background: white;
- .bg_list_item_num {
- width: 100%;
- min-height: 98px;
- background: white;
- display: flex;
- justify-content: center;
- align-items: center;
- border-bottom: 1PX solid #E5E5E5;
- &:last-child {
- border: none !important;
- }
- .kong {
- text-align: center;
- font-size: 25px;
- padding: 30px 0;
- background: #ffffff;
- }
- .bg_list_item_num_item {
- width: 100%;
- height: 100%;
- display: flex;
- align-items: center;
- // height: 118px;
- padding: 15px 0;
- box-sizing: border-box;
- justify-content: space-between;
- border-bottom: 1px 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: 116px;
- height: 62px;
- line-height: 62px;
- text-align: center;
- background: #F2F2F2;
- border-radius: 8px;
- font-size: 26px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #333333;
- margin-right: 20px;
- &:last-child {
- margin: 0 !important;
- }
- }
- }
- .bg_list_item_num_item_wl {
- flex-shrink: 0;
- display: flex;
- flex-direction: column;
- span {
- font-size: 34px;
- color: #222222;
- }
- .bg_list_item_num_item_wl_lx {
- margin-top: 10px;
- span {
- color: #222222;
- font-size: 28px;
- }
- }
- }
- .warning {
- color: $nav-stateColor5 !important;
- }
- .err {
- color: $nav-stateColor4 !important;
- }
- img {
- width: 12px;
- height: 24px;
- margin-left: 20px;
- }
- span {
- flex-shrink: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- b {
- font-size: 30px;
- color: red;
- margin-right: 5px;
- }
- .warning {
- color: $nav-stateColor5 !important;
- margin-right: 5px;
- }
- .err {
- color: $nav-stateColor4 !important;
- margin-right: 5px;
- }
- &:nth-child(1) {
- font-size: 30px;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 28px;
- 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: 28px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #333333;
- }
- input::-webkit-input-placeholder {
- font-size: 28px;
- }
- input {
- text-align: right;
- width: 180px;
- height: 60px;
- border-radius: 8px;
- border: 1PX solid #E5E5E5;
- margin-right: 20px;
- font-size: 28px;
- font-weight: 400;
- color: #333333;
- padding: 0 30px
- }
- .wulll {
- width: 400px;
- text-align: right;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- span {
- font-size: 28px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #999999;
- }
- }
- }
- }
- }
- }
- }
- .details_dj {
- display: flex;
- flex-direction: column;
- .details_dj_title {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 0 30px 30px 30px;
- box-sizing: border-box;
- .details_dj_title_left {
- display: flex;
- align-items: center;
- .details_x {
- width: 8px;
- height: 30px;
- background: $nav-color;
- border-radius: 2px;
- margin-right: 12px;
- }
- span {
- font-size: 32px;
- font-weight: 500;
- color: #222222;
- }
- }
- .details_dj_title_right {
- display: flex;
- align-items: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 12px;
- }
- span {
- font-size: 28px;
- font-weight: 400;
- color: $nav-color;
- }
- }
- }
- .details_dj_list {
- width: 100%;
- /*padding: 30px;*/
- box-sizing: border-box;
- background: #ffffff;
- display: flex;
- flex-direction: column;
- .details_dj_list_item {
- display: flex;
- flex-direction: column;
- border-bottom: 1px solid #E5E5E5;
- padding: 30px;
- /*margin: 30px;*/
- /*padding-bottom: 30px;*/
- /*margin-bottom: 30px !important;*/
- span {
- &:nth-child(1) {
- font-size: 28px;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 24px;
- font-weight: 400;
- color: #999999;
- margin-top: 24px;
- }
- }
- }
- }
- }
- .bh_zw {
- height: 160px;
- }
- .bg_footer {
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- padding: 0 30px 60px 30px;
- box-sizing: border-box;
- .bg_footer_submit1 {
- width: 690px;
- height: 76px;
- background: #FFFFFF;
- border-radius: 36px;
- border: 1px solid #E5E5E5;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 28px;
- height: 28px;
- margin-right: 12px;
- }
- span {
- font-size: 26px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #305ED5;
- }
- }
- .bg_footer_submit {
- width: 690px;
- height: 88px;
- background: $nav-color;
- box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
- border-radius: 8px;
- font-size: 30px;
- font-weight: 500;
- color: #FFFFFF;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- .tg {
- width: 100%;
- height: 800px;
- padding: 30px;
- box-sizing: border-box;
- .tg_header {
- width: 100%;
- height: 45px;
- text-align: center;
- line-height: 45px;
- font-size: 30px;
- font-weight: 500;
- color: #222222;
- }
- .tg_table {
- width: 100%;
- margin-top: 40px;
- .tg_table_header {
- width: 100%;
- height: 72px;
- background: #EFF2FC;
- display: flex;
- align-items: center;
- .tg_table_header_item {
- flex: 1;
- font-size: 26px;
- font-weight: 500;
- color: #333333;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- }
- .nr {
- width: 100%;
- max-height: calc(100% - 133px);
- overflow-x: scroll;
- .tg_table_nr {
- width: 100%;
- padding: 24px 10px;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- background: white;
- box-shadow: inset 0px -2px 0px 0px #E5E5E5;
- .tg_table_nr_item {
- flex: 1;
- font-size: 26px;
- font-weight: 500;
- color: #333333;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .tg_table_nr_item1 {
- flex: 1;
- font-size: 26px;
- font-weight: 500;
- color: #333333;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- }
- }
- .tg_footer {
- width: calc(100% - 60px);
- position: fixed;
- bottom: 0;
- display: flex;
- justify-content: space-between;
- align-items: center;
- box-sizing: border-box;
- padding-bottom: 40px;
- .tg_footer_fh {
- width: 100%;
- height: 88px;
- display: flex;
- align-items: center;
- justify-content: center;
- background: rgba(66, 117, 252, 0.05);
- border-radius: 8px;
- border: 1PX solid #4275FC;
- font-size: 32px;
- font-weight: 500;
- color: $nav-color;
- }
- .tg_footer_qr {
- width: 100%;
- height: 88px;
- border: none;
- display: flex;
- align-items: center;
- justify-content: center;
- background: $nav-color;
- border-radius: 8px;
- font-size: 32px;
- font-weight: 500;
- color: #FFFFFF;
- }
- }
- .bl {
- width: 100%;
- height: 800px;
- padding: 30px;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- .bl_head {
- width: 100%;
- height: 50px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- span {
- font-size: 28px;
- color: #222222;
- &:nth-child(2) {
- font-size: 32px !important;
- }
- }
- img {
- width: 28px;
- height: 28px;
- }
- }
- .bl_footer {
- width: 100%;
- height: 88px;
- line-height: 88px;
- text-align: center;
- background: #305ED5;
- border-radius: 8px;
- font-size: 32px;
- font-family: PingFangSC-Medium, PingFang SC;
- font-weight: 500;
- color: #FFFFFF;
- margin-top: 30px;
- }
- .bl_list {
- width: 100%;
- height: calc(100% - 168px);
- overflow-y: scroll;
- margin-top: 30px;
- .bl_list_item {
- width: 100%;
- height: 96px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1PX solid #E5E5E5;
- &:last-child {
- border: none !important;
- }
- .bl_list_item_left {
- flex: 1;
- display: flex;
- align-items: center;
- input {
- width: 30px;
- height: 30px;
- border: 1PX solid #CCCCCC;
- margin: 0 !important;
- }
- span {
- font-size: 30px;
- color: #222222;
- margin-left: 10px;
- }
- }
- .bl_list_item_right {
- flex: 1;
- height: 50px;
- text-align: right;
- input {
- padding-left: 5px;
- width: 160px;
- height: 100%;
- padding: 0 30px;
- box-sizing: border-box;
- text-align: right;
- font-size: 28px;
- color: #333333;
- border-radius: 10px;
- border: 1PX solid #CCCCCC;
- &::-webkit-input-placeholder {
- font-size: 28px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #999999;
- }
- }
- }
- }
- }
- }
+.bg {
+ width: 100%;
+ /*height: 100%;*/
+ position: absolute;
+ background: #F7F7F7;
+
+ .bg_plan {
+ width: 100%;
+ // height: 98px;
+ padding: 30px;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ margin-bottom: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ font-size: 30px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+
+ b {
+ color: red;
+ }
}
-</style>
+
+ .bg_plan_nr {
+ display: flex;
+ flex-direction: column;
+
+ span {
+ font-size: 24px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #666666;
+ margin-top: 20px;
+
+ &:first-child {
+ font-size: 32px;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #333333;
+ margin-top: 0 !important;
+ }
+ }
+ }
+
+ .bg_plan_label_val {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+
+ img {
+ width: 12px;
+ height: 24px;
+ margin-left: 20px;
+ }
+ }
+ }
+
+ .details_cz {
+ width: 100%;
+ padding: 30px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .details_cz_sdtl {
+ width: 330px;
+ height: 76px;
+ background: #FFFFFF;
+ border-radius: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 14px;
+ }
+
+ span {
+ font-size: 26px;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .details_cz_smtl {
+ /*width: 330px;*/
+ flex: 1;
+ height: 76px;
+ background: $nav-color;
+ border-radius: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 14px;
+ }
+
+ span {
+ font-size: 26px;
+ font-weight: 400;
+ color: #ffffff;
+ }
+ }
+ }
+
+ .bg_cate {
+ width: 100%;
+ height: 88px;
+ background: #FFFFFF;
+ margin-top: 20px;
+ display: flex;
+ align-items: center;
+
+ .active {
+ box-sizing: border-box;
+ color: #305ED5 !important;
+ border-bottom: 2PX solid #305ED5;
+ }
+
+ .bg_cate_item {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #555555;
+ }
+ }
+
+ .bg_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-top: 30px;
+
+ .bg_list_item {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 40px;
+
+ .kong {
+ text-align: center;
+ padding: 30px 0;
+ background: #ffffff;
+ font-size: 25px;
+
+ span {
+ color: #474747;
+ }
+ }
+
+ .bg_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding-left: 30px;
+ padding-right: 30px;
+ margin-bottom: 30px;
+
+ .bg_list_item_top_left {
+ display: flex;
+ align-items: center;
+
+ .left {
+ margin-left: 12px;
+ font-size: 28px;
+ }
+
+ .warning {
+ width: 8px;
+ height: 30px;
+ border-radius: 2px;
+ margin-right: 12px;
+ background: $nav-stateColor5 !important;
+ }
+
+ .error {
+ width: 8px;
+ height: 30px;
+ border-radius: 2px;
+ margin-right: 12px;
+ background: $nav-stateColor4 !important;
+ }
+
+ .bg_list_item_top_left_x {
+ width: 8px;
+ height: 30px;
+ background: $nav-color;
+ border-radius: 2px;
+ margin-right: 12px;
+ }
+
+ span {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ display: flex;
+ align-items: center;
+ }
+ }
+
+ .bg_list_item_top_right {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 12px;
+ }
+
+ span {
+ font-size: 28px;
+ font-weight: 400;
+ color: $nav-color;
+ }
+ }
+ }
+
+ .bg_list_item_h {
+ width: 100%;
+ padding: 0 30px;
+ box-sizing: border-box;
+ background: white;
+
+ .bg_list_item_num {
+ width: 100%;
+ min-height: 98px;
+ background: white;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-bottom: 1PX solid #E5E5E5;
+
+ &:last-child {
+ border: none !important;
+ }
+
+ .kong {
+ text-align: center;
+ font-size: 25px;
+ padding: 30px 0;
+ background: #ffffff;
+ }
+
+ .bg_list_item_num_item {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ // height: 118px;
+ padding: 15px 0;
+ box-sizing: border-box;
+ justify-content: space-between;
+ border-bottom: 1px 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: 116px;
+ height: 62px;
+ line-height: 62px;
+ text-align: center;
+ background: #F2F2F2;
+ border-radius: 8px;
+ font-size: 26px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 20px;
+
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+
+ .bg_list_item_num_item_wl {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+
+ span {
+ font-size: 34px;
+ color: #222222;
+ }
+
+ .bg_list_item_num_item_wl_lx {
+ margin-top: 10px;
+
+ span {
+ color: #222222;
+ font-size: 28px;
+ }
+ }
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .err {
+ color: $nav-stateColor4 !important;
+ }
+
+ img {
+ width: 12px;
+ height: 24px;
+ margin-left: 20px;
+ }
+
+ span {
+ flex-shrink: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+
+ b {
+ font-size: 30px;
+ color: red;
+ margin-right: 5px;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ margin-right: 5px;
+ }
+
+ .err {
+ color: $nav-stateColor4 !important;
+ margin-right: 5px;
+ }
+
+ &:nth-child(1) {
+ font-size: 30px;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ font-size: 28px;
+ 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: 28px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+
+ input::-webkit-input-placeholder {
+ font-size: 28px;
+ }
+
+ input {
+ text-align: right;
+ width: 180px;
+ height: 60px;
+ border-radius: 8px;
+ border: 1PX solid #E5E5E5;
+ margin-right: 20px;
+ font-size: 28px;
+ font-weight: 400;
+ color: #333333;
+ padding: 0 30px
+ }
+
+ .wulll {
+ width: 400px;
+ text-align: right;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+
+ span {
+ font-size: 28px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .details_dj {
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_title {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30px 30px 30px;
+ box-sizing: border-box;
+
+ .details_dj_title_left {
+ display: flex;
+ align-items: center;
+
+ .details_x {
+ width: 8px;
+ height: 30px;
+ background: $nav-color;
+ border-radius: 2px;
+ margin-right: 12px;
+ }
+
+ span {
+ font-size: 32px;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .details_dj_title_right {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 12px;
+ }
+
+ span {
+ font-size: 28px;
+ font-weight: 400;
+ color: $nav-color;
+ }
+ }
+ }
+
+ .details_dj_list {
+ width: 100%;
+ /*padding: 30px;*/
+ box-sizing: border-box;
+ background: #ffffff;
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_list_item {
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1px solid #E5E5E5;
+ padding: 30px;
+
+ /*margin: 30px;*/
+ /*padding-bottom: 30px;*/
+ /*margin-bottom: 30px !important;*/
+ span {
+ &:nth-child(1) {
+ font-size: 28px;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ font-size: 24px;
+ font-weight: 400;
+ color: #999999;
+ margin-top: 24px;
+ }
+ }
+ }
+ }
+ }
+
+ .bh_zw {
+ height: 160px;
+ }
+
+ .bg_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 0 30px 60px 30px;
+ box-sizing: border-box;
+
+ .bg_footer_submit1 {
+ width: 690px;
+ height: 76px;
+ background: #FFFFFF;
+ border-radius: 36px;
+ border: 1px solid #E5E5E5;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 28px;
+ height: 28px;
+ margin-right: 12px;
+ }
+
+ span {
+ font-size: 26px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #305ED5;
+ }
+ }
+
+ .bg_footer_submit {
+ width: 690px;
+ height: 88px;
+ background: $nav-color;
+ box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8px;
+ font-size: 30px;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+
+ .tg {
+ width: 100%;
+ height: 800px;
+ padding: 30px;
+ box-sizing: border-box;
+
+ .tg_header {
+ width: 100%;
+ height: 45px;
+ text-align: center;
+ line-height: 45px;
+ font-size: 30px;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .tg_table {
+ width: 100%;
+ margin-top: 40px;
+
+ .tg_table_header {
+ width: 100%;
+ height: 72px;
+ background: #EFF2FC;
+ display: flex;
+ align-items: center;
+
+ .tg_table_header_item {
+ flex: 1;
+ font-size: 26px;
+ font-weight: 500;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+
+ .nr {
+ width: 100%;
+ max-height: calc(100% - 133px);
+ overflow-x: scroll;
+
+ .tg_table_nr {
+ width: 100%;
+ padding: 24px 10px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ background: white;
+ box-shadow: inset 0px -2px 0px 0px #E5E5E5;
+
+ .tg_table_nr_item {
+ flex: 1;
+ font-size: 26px;
+ font-weight: 500;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .tg_table_nr_item1 {
+ flex: 1;
+ font-size: 26px;
+ font-weight: 500;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+ }
+
+ .tg_footer {
+ width: calc(100% - 60px);
+ position: fixed;
+ bottom: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ padding-bottom: 40px;
+
+ .tg_footer_fh {
+ width: 100%;
+ height: 88px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(66, 117, 252, 0.05);
+ border-radius: 8px;
+ border: 1PX solid #4275FC;
+ font-size: 32px;
+ font-weight: 500;
+ color: $nav-color;
+ }
+
+ .tg_footer_qr {
+ width: 100%;
+ height: 88px;
+ border: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: $nav-color;
+ border-radius: 8px;
+ font-size: 32px;
+ font-weight: 500;
+ color: #FFFFFF;
+ }
+ }
+
+ .bl {
+ width: 100%;
+ height: 800px;
+ padding: 30px;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+
+ .bl_head {
+ width: 100%;
+ height: 50px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ font-size: 28px;
+ color: #222222;
+
+ &:nth-child(2) {
+ font-size: 32px !important;
+ }
+ }
+
+ img {
+ width: 28px;
+ height: 28px;
+ }
+ }
+
+ .bl_footer {
+ width: 100%;
+ height: 88px;
+ line-height: 88px;
+ text-align: center;
+ background: #305ED5;
+ border-radius: 8px;
+ font-size: 32px;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #FFFFFF;
+ margin-top: 30px;
+ }
+
+ .bl_list {
+ width: 100%;
+ height: calc(100% - 168px);
+ overflow-y: scroll;
+ margin-top: 30px;
+
+ .bl_list_item {
+ width: 100%;
+ height: 96px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1PX solid #E5E5E5;
+
+ &:last-child {
+ border: none !important;
+ }
+
+ .bl_list_item_left {
+ flex: 1;
+ display: flex;
+ align-items: center;
+
+ input {
+ width: 30px;
+ height: 30px;
+ border: 1PX solid #CCCCCC;
+ margin: 0 !important;
+ }
+
+ span {
+ font-size: 30px;
+ color: #222222;
+ margin-left: 10px;
+ }
+ }
+
+ .bl_list_item_right {
+ flex: 1;
+ height: 50px;
+ text-align: right;
+
+ input {
+ padding-left: 5px;
+ width: 160px;
+ height: 100%;
+ padding: 0 30px;
+ box-sizing: border-box;
+ text-align: right;
+ font-size: 28px;
+ color: #333333;
+ border-radius: 10px;
+ border: 1PX solid #CCCCCC;
+
+ &::-webkit-input-placeholder {
+ font-size: 28px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+}</style>
diff --git a/minipro_standard/App.vue b/minipro_standard/App.vue
index d52fd35..def0339 100644
--- a/minipro_standard/App.vue
+++ b/minipro_standard/App.vue
@@ -15,6 +15,7 @@
/*姣忎釜椤甸潰鍏叡css */
@import "@/uni_modules/uview-ui/index.scss";
@import "common/css/lib.css";
+ @import "common/css/common.css";
// page {
// background-color: #F3F6F9 !important;
// }
diff --git a/minipro_standard/common/config.js b/minipro_standard/common/config.js
index 15d4a4d..0d13af6 100644
--- a/minipro_standard/common/config.js
+++ b/minipro_standard/common/config.js
@@ -1,5 +1,30 @@
-module.exports = {
- // baseUrl: 'http://106.14.20.42/test_hfznzz/',
- // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
- baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api/'
+module.exports = {
+ // baseUrl: 'http://106.14.20.42/test_hfznzz/',
+ // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
+ 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]*$/,
+ decimal: /^0$|^[1-9]\d{0,15}$|^[1-9]\d{0,15}\.{1}\d{1,4}$|^0\.{1}\d{1,4}$/g,
+ positiveIntegerDecimal: /^([1-9][0-9]*|0)(\.[0-9]?[1-9][1-9][1-9])?$/,
+ number: /^\d+(?:\.\d{1,4})?$/,
+ Attribute: {
+ HH: 'APPLIANCE_MIX',
+ HG: 'APPLIANCE_ONTEST',
+ BL: 'APPLIANCE_OFFTEST',
+ BF: 'APPLIANCE_USELESS'
+ },
+ QRCodeType: {
+ WL: 'WL',
+ CK: 'CK',
+ HW: 'HW',
+ GD: 'GD',
+ GZ: 'GZ',
+ SB: 'SB',
+ YG: 'YG',
+ ZKD: 'ZKD',
+ CKD: 'CKD',
+ RKD: 'RKD'
+ }
}
diff --git a/minipro_standard/common/css/common.css b/minipro_standard/common/css/common.css
new file mode 100644
index 0000000..b9945ec
--- /dev/null
+++ b/minipro_standard/common/css/common.css
@@ -0,0 +1,8 @@
+.tips-label {
+ background: rgba(220,26,26,0.06);
+ padding: 18rpx 30rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #DC1A1A;
+ line-height: 36rpx;
+}
\ No newline at end of file
diff --git a/minipro_standard/common/css/lib.css b/minipro_standard/common/css/lib.css
index 2ed9d1f..3de5db6 100644
--- a/minipro_standard/common/css/lib.css
+++ b/minipro_standard/common/css/lib.css
@@ -13,7 +13,7 @@
.wp{ width: 94%; margin: 0 auto;}
.w30{ width: 30%;}.w40{ width: 40%;}.w47{ width: 47%;}.w48{ width: 48%;}.w49{ width: 49%;}.w50{ width: 50%;}.w60{ width: 60%;}.w80{ width: 80%;}.w90{ width: 90%;}
-.bg_m{background-color: #F3F6F9;}.bg_fa{ background-color: #fafafa;}.bg_f2{ background-color: #f2f2f2;}.bg_f1{ background-color: #f1f1f1;}.bg_f5{ background-color: #f5f5f5;}.bg_f6{ background-color: #f6f6f6;}.bg_f7{ background-color: #f7f7f7;}.bg_f8{ background-color: #f8f8f8;}.bg_e{ background-color: #eee;}.bg_d{ background-color: #ddd;}.bg_w{ background-color: #fff;}.bg_3{ background-color: #333;}
+.bg_m{background-color: #305ED5;}.bg_fa{ background-color: #fafafa;}.bg_f2{ background-color: #f2f2f2;}.bg_f1{ background-color: #f1f1f1;}.bg_f5{ background-color: #f5f5f5;}.bg_f6{ background-color: #f6f6f6;}.bg_f7{ background-color: #f7f7f7;}.bg_f8{ background-color: #f8f8f8;}.bg_e{ background-color: #eee;}.bg_d{ background-color: #ddd;}.bg_w{ background-color: #fff;}.bg_3{ background-color: #333;}
.rd4{border-radius: 4rpx;}.rd5{border-radius: 5rpx;}.rd6{border-radius: 6rpx;}.rd8{border-radius: 8rpx;}.rd10{border-radius: 10rpx;}.rd15{border-radius: 15rpx;}.rd20{border-radius: 20rpx;}.rd30{border-radius: 30rpx;}.rd40{border-radius: 40rpx;}.rd50{border-radius: 50rpx;}.rd60{border-radius: 60rpx;}.rd70{border-radius: 70rpx;}.rd80{border-radius: 80rpx;}.rd90{border-radius: 90rpx;}.rd100{border-radius: 100rpx;}.rd120{border-radius: 120rpx;}.rdhalf{ border-radius:50%}
@@ -44,7 +44,8 @@
.img16{ width: 16rpx; height: 16rpx;}
.img20{ width: 20rpx; height: 20rpx;}
.img24{ width: 24rpx; height: 24rpx;}
-.img26{ width: 26rpx; height: 26rpx;}
+.img26{ width: 26rpx; height: 26rpx;}
+.img28{ width: 28rpx; height: 28rpx;}
.img30{ width: 30rpx; height: 30rpx;}
.img32{ width: 32rpx; height: 32rpx;}
.img36{ width: 36rpx; height: 36rpx;}
@@ -71,23 +72,24 @@
.bcover{ background-size: cover; background-position: center center; background-repeat: no-repeat;}
.bfull{ background-size: 100% 100%; background-position: center center; background-repeat: no-repeat;}
-.b{ font-weight: bold;}
+.b{ font-weight: bold;}
+.n{ font-weight: 400;}
.ibm{ display: inline-block; vertical-align: middle;}
.bbox{ box-sizing: border-box;}
.rauto{ margin-left:auto; margin-right:auto}
-.fixedBottom{position: fixed; left: 0; bottom: 0; width: 100%;}
+.fixedBottom{position: fixed; left: 0; bottom: env(safe-area-inset-bottom); width: 100%;}
.lh1-6{line-height: 1.6;}
.lh1-6{line-height: 1.6;}
.lh1-8{line-height: 1.8;}
.lh2{line-height: 2;}
-.sbtn{ display: inline-block; padding: 0.7em 2em; border: 1rpx solid transparent; box-sizing: border-box; text-align: center;}
+.sbtn{ display: inline-block; padding: 0.3em 1em; border: 1rpx solid transparent; box-sizing: border-box; text-align: center;}
.mini{ font-size: 18rpx;}
.med{ font-size: 26rpx;}
.def{ font-size: 34rpx;}
.sbtn_w100{ width: 100%; padding-left: 0; padding-right: 0;}
-.sbtn_green{ color: #fff; background:#65C35D; }
-.sbtn_green_rim{ color: #65C35D; border-color:#65C35D; }
+.sbtn_green{ color: #fff; background:#4275FC; }
+.sbtn_green_rim{ color: #4275FC; border-color:#4275FC; }
.sbtn_black{ color: #fff; background:#333; }
.sbtn_gray{ color: #333; background:#F7F7F7; }
.sbtn_black_rim{ color: #333; border-color:#eee; }
@@ -112,21 +114,24 @@
.shadowA{box-shadow: 0 0 5rpx 0 #ddd;}
.shadowB{ position: relative;}
.shadowB::after{ content: ""; display: block; width: 100%; height: 8rpx; box-shadow: 0 6rpx 12rpx rgba(0,0,0,.08); top: -8rpx; left: 0; position: absolute; }
-
-
-.orange{ color: #EA531B;}
-.green{ color: #65C35D;}
-.blue{ color: #3C77DA;}
-.red{ color: #f00;}
-.white{ color: #fff;}
-.mc{color:#216EEE}
-.wc{color:#F98107}
+.rp { position: relative; }
+.ap { position: absolute; }
+
+.orange{ color: #EA531B !important;}
+.green{ color: #65C35D !important;}
+.blue{ color: #3C77DA !important;}
+.red{ color: #f00 !important;}
+.white{ color: #fff !important;}
+.mc{color:#216EEE !important;}
+.wc{color:#F98107 !important;}
+
+.cm {color: #305ED5}
.c1{color: #111}.c2{color: #222}.c3{ color: #333;}.c6{ color: #666;}.cc{ color: #ccc;}.cf{ color: #fff;}
/* /deep/ .uicon-close .u-icon--right{ position: absolute; right: 30rpx; top: 30rpx; z-index: 999;} */
.popCloseBtn{ position: absolute; width:50rpx; height:50rpx; right: 20rpx; top: 20rpx;}
.fixedTL{ position: absolute; left: 0; top: 0;}
-.fixedTR{ position: absolute; right: 0; top: 0;}
+.fixedTR{ position: absolute; right: 0; top: 0;}
.beyondO { white-space: nowrap; text-overflow: ellipsis; -webkit-text-overflow: ellipsis; overflow: hidden;}
diff --git a/minipro_standard/components/InOutInfo.vue b/minipro_standard/components/InOutInfo.vue
new file mode 100644
index 0000000..21a99fc
--- /dev/null
+++ b/minipro_standard/components/InOutInfo.vue
@@ -0,0 +1,82 @@
+<template>
+ <view class="p30 bg_w f26 info-style">
+ <view v-if="isOut" class="cm b f32">璁″垝鍑哄簱鏃ユ湡锛歿{ info.outPlandate }}</view>
+ <view v-else class="cm b f32">璁″垝鍏ュ簱鏃ユ湡锛歿{ info.inPlandate || info.planDate }}</view>
+ <view class="c2 mt25">
+ <text class="c6">鏉ユ簮绫诲瀷锛�</text>
+ {{ typeTstr(info.originType) }}
+ </view>
+ <view class="c2 mt25">
+ <text class="c6">鏉ユ簮鍗曞彿锛�</text>
+ {{ info.originCode || '-' }}
+ </view>
+ <view class="c2 mt25">
+ <text class="c6">鐢宠浜哄憳锛�</text>
+ {{ info.userName ? (info.userName + '/' + info.userDepartName) : (info.inUserName + '/' + info.inDepartName) }}
+ </view>
+ <view v-if="isOut" class="c2 mt25">
+ <text class="c6">鍏ュ簱鎺ユ敹浜猴細</text>
+ {{ info.originCode || '-' }}
+ </view>
+ <view class="c2 mt25">
+ <text class="c6">鐢宠鏃堕棿锛�</text>
+ {{ info.createTime || '-' }}
+ </view>
+ <view class="rd15 ptb25 plr25 bg_f7">
+ <view class="f26 b c2">澶囨敞锛�</view>
+ <view class="mt20">
+ <u-read-more :showHeight="60" :toggle="true" textIndent="0" closeText="灞曞紑" :shadowStyle="shadowStyle">
+ <rich-text :nodes="info.remark"></rich-text>
+ <!-- {{ info.remark }} -->
+ </u-read-more>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name:"InOutInfo",
+ props: {
+ isOut: {
+ type: Boolean,
+ default: true
+ },
+ info: {
+ type: Object,
+ default: () => {}
+ }
+ },
+ data() {
+ return {
+ types: [
+ { name: '鍏ㄩ儴', id: '' },
+ { name: '閲囪喘璁㈠崟', id: '0' },
+ { name: '鐢熶骇宸ュ崟', id: '1' },
+ { name: '閿�鍞鍗�', id: '2' },
+ { name: '杞簱鍗�', id: '3' },
+ { name: '鐩樼偣鍗�', id: '4' },
+ ],
+ shadowStyle: {
+ backgroundImage: "linear-gradient(to top, #f7f7f7, rgba(247, 247, 247, 0.5))",
+ paddingTop: "50rpx",
+ marginTop: "-50rpx",
+ justifyContent: 'flex-end',
+ colors: '#333',
+ }
+ };
+ },
+ methods: {
+ typeTstr(type) {
+ let temp = this.types.find(item => item.id == type)
+ return temp ? temp.name : '-'
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+.info-style {
+ border-bottom: 20rpx #f7f7f7 solid;
+}
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/LabelSelection.vue b/minipro_standard/components/LabelSelection.vue
new file mode 100644
index 0000000..6a26a84
--- /dev/null
+++ b/minipro_standard/components/LabelSelection.vue
@@ -0,0 +1,88 @@
+<template>
+ <scroll-view class="tag" scroll-x>
+ <view class="tag_list">
+ <view v-for="item in TagList"
+ :key="item.id"
+ :class="{'tag_item': true, 'tagActive': item.id == activeId}"
+ @click="change(item)">
+ <text>{{item.name}}</text>
+ <text v-if="isShow && item.num">({{item.num}})</text>
+ </view>
+ </view>
+ </scroll-view>
+</template>
+
+<script>
+ export default {
+ name: "LabelSelection",
+ props: {
+ TagList: Array,
+ isShow: Boolean
+ },
+ data() {
+ return {
+ activeId: ''
+ };
+ },
+ methods: {
+ change(item) {
+ if (this.activeId !== item.id) {
+ this.activeId = item.id
+ this.$emit('change', item.id)
+ }
+ }
+ },
+ watch: {
+ TagList: {
+ immediate: true,
+ handler(news, old) {
+ let list = news
+ if (list && list.length !== 0) {
+ this.activeId = list[0].id
+ }
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .tag::-webkit-scrollbar {
+ width: 0 !important;
+ }
+ .tag::-webkit-scrollbar {
+ width: 0 !important;
+ height: 0;
+ }
+ .tag {
+ width: 100%;
+ padding: 5rpx 0;
+ box-sizing: border-box;
+ .tag_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+ .tagActive {
+ background: $nav-color !important;
+ text {
+ color: #FFFFFF !important;
+ }
+ }
+ .tag_item {
+ min-width: 120rpx;
+ padding: 14rpx 24rpx;
+ border-radius: 26rpx;
+ text-align: center;
+ flex-shrink: 0;
+ margin-right: 20rpx;
+ border: 1rpx solid #CCCCCC;
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #555555;
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/Search.vue b/minipro_standard/components/Search.vue
new file mode 100644
index 0000000..347b379
--- /dev/null
+++ b/minipro_standard/components/Search.vue
@@ -0,0 +1,181 @@
+<template>
+ <view class="search">
+ <view class="search_box">
+ <view class="search_input">
+ <image src="@/static/ic_search@2x.png" alt="">
+ <input v-model="text" @keyup.enter="searchInput()" type="text" :placeholder="placeholder" />
+ </view>
+ <view class="search_operation" v-if="isShow">
+ <view class="search_operation_w"></view>
+ <image @click="openCate()" src="@/static/filter@2x.png" mode="widthFix">
+ </view>
+ </view>
+ <u-popup :show="open" :round="10" mode="bottom">
+ <scroll-view scroll-y class="content">
+ <slot name="content"></slot>
+ </scroll-view>
+ <view class="zhanwei"></view>
+ <view class="footer">
+ <view class="footer_close" @click="closes">閲嶇疆</view>
+ <view class="footer_submit" @click="submit">纭畾</view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ text: '',
+ open: false
+ };
+ },
+ props: {
+ isShow: Boolean,
+ placeholder: String
+ },
+ methods: {
+ // 鎼滅储妗嗘悳绱�
+ searchInput() {
+ this.$emit('searchInput', this.text)
+ },
+ // 鎵撳紑寮圭獥
+ openCate() {
+ this.open = true
+ },
+ // 閲嶇疆
+ closes() {
+ this.open = false
+ this.text = ''
+ this.$emit('reset', this.text)
+ },
+ // 鎼滅储鎻愪氦
+ submit() {
+ this.open = false
+ this.$emit('submit')
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .search {
+ width: 100%;
+ height: 68rpx;
+ display: flex;
+ align-items: center;
+ .zhanwei {
+ height: 180rpx;
+ background: #ffffff;
+ }
+ .content {
+ padding: 30rpx 30rpx 0 30rpx;
+ width: 100%;
+ height: 800rpx;
+ box-sizing: border-box;
+ }
+ .footer {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding-left: 40rpx;
+ padding-right: 40rpx;
+ padding-bottom: 64rpx;
+ box-sizing: border-box;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ background: #ffffff;
+ z-index: 99;
+ .footer_close {
+ flex: 1;
+ padding: 28rpx 0;
+ box-sizing: border-box;
+ margin-right: 22rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #999999;
+ background: #F7F7F7;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .footer_submit {
+ flex: 1;
+ padding: 28rpx 0;
+ box-sizing: border-box;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #ffffff;
+ background: $nav-color;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ .search_box {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ .search_input {
+ flex: 1;
+ height: 100%;
+ background: #F7F7F7;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ padding: 15rpx 30rpx;
+ box-sizing: border-box;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 10rpx;
+ }
+ input {
+ width: 100%;
+ border: none;
+ outline: none;
+ background: #F7F7F7;
+ font-size: 26rpx;
+ }
+ input::-webkit-input-placeholder { /* WebKit browsers */
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ input::-moz-placeholder { /* Mozilla Firefox 19+ */
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ input:-ms-input-placeholder { /* Internet Explorer 10+ */
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ }
+ .search_operation {
+ flex-shrink: 0;
+ /*width: 150rpx;*/
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ /*margin-left: 30rpx;*/
+ image {
+ width: 44rpx;
+ height: 44rpx;
+ }
+ .search_operation_w {
+ width: 30rpx;
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/components/SelectMultipleMaterial.vue b/minipro_standard/components/SelectMultipleMaterial.vue
new file mode 100644
index 0000000..4939502
--- /dev/null
+++ b/minipro_standard/components/SelectMultipleMaterial.vue
@@ -0,0 +1,274 @@
+<template>
+ <u-popup :show="show" :round="10" closeable @close="show=false">
+ <view class="material-content bbox p30 rp">
+ <view class="tc b f24 c2 mb20">閫夋嫨鐗╂枡</view>
+ <v-Search ref="V" @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜">
+ </v-Search>
+ <div class="content_total">鍏眥{pages.total}}鏉℃暟鎹�</div>
+ <view class="scroll-content">
+ <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
+ <u-list-item v-for="(item1, index) in list" :key="index">
+ <view class="flex mb20" @click="selectMaterialAction(index)">
+ <view class="img36 mr20 pt10">
+ <u-checkbox-group style="display: block;" name="" @change="selectMaterialAction(index)">
+ <u-checkbox :checked="item1.isActive"></u-checkbox>
+ </u-checkbox-group>
+ </view>
+ <view class="fx1">
+ <div class="page_content_title_top">
+ <span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="item1.qualityType == 0">
+ 鍚堟牸
+ <text class="c1" decode>{{ splite }}</text>
+ </span>
+ <span class="orange" v-else-if="item1.qualityType == 1">
+ 涓嶈壇
+ <text class="c1" decode>{{ splite }}</text>
+ </span>
+ <span class="red" v-else-if="item1.qualityType == 2">
+ 鎶ュ簾
+ <text class="c1" decode>{{ splite }}</text>
+ </span>
+ <span v-else>
+ -
+ <text class="c1" decode>{{ splite }}</text>
+ </span>
+ <span>
+ {{item1.procedureName ? item1.procedureName : '-'}}
+ <text class="c1" decode>{{ splite }}</text>
+ </span>
+ <span>{{item1.batch ? item1.batch : '-'}}</span>
+ </div>
+ <div class="mt20 plr25 ptb20 bg_f7 f26">
+ <div class="c2 mb10"><span class="c6">璐т綅锛�</span>{{ item1.locationName }}</div>
+ <div class="c2"><span class="c6">鏁伴噺锛�</span>{{ item1.num }}{{ item1.unitName }}</div>
+ </div>
+ </view>
+ </view>
+ </u-list-item>
+ </u-list>
+ </view>
+ <view style="height: 98rpx;"></view>
+ <!-- <view class="">
+ <u-safe-bottom></u-safe-bottom>
+ </view> -->
+ <view class="fixedBottom bottom cY">
+ <view class="fx1 bbox plr30">
+ <u-checkbox-group style="display: block;" name="" @change="selectAll()">
+ <u-checkbox :checked="isAll" label="鍏ㄩ��"></u-checkbox>
+ </u-checkbox-group>
+ </view>
+ <view class="submit sbtn_green bbox tc">鎻愪氦()</view>
+ </view>
+ </view>
+ </u-popup>
+</template>
+
+<script>
+ import vSearch from '@/components/Search.vue'
+ export default {
+ name: "selectMaterial",
+ components: {
+ vSearch
+ },
+ data() {
+ return {
+ show: false,
+ splite:' | ',
+ isAll: false,
+ pages: {
+ size: 10,
+ index: 1,
+ total: 0
+ },
+ list: []
+ };
+ },
+ methods: {
+ open(target) {
+ this.show = true
+ this.workorderId = target.workorderId
+ this.deviceId = target.deviceId
+ this.list = []
+ this.pages = {
+ size: 10,
+ index: 1,
+ total: 0
+ }
+ this.loadData()
+ },
+ loadData() {
+ this.list = [{
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ },
+ {
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ isActive: false
+ }
+ ]
+ },
+ scrolltoupper() {
+ this.loadData()
+ },
+ scrolltolower() {
+ this.loadData()
+ },
+ selectMaterialAction(index) {
+ // console.log('12');
+ this.list[index].isActive = !this.list[index].isActive
+ },
+ selectAll() {}
+ }
+ }
+ /*
+ */
+</script>
+
+<style lang="scss" scoped>
+ .material-content {
+ display: flex;
+ flex-direction: column;
+ height: 1200rpx;
+ box-sizing: border-box;
+ .scroll-content {
+ height: calc(1100rpx - env(safe-area-inset-bottom));
+ overflow: scroll;
+ }
+ }
+
+ .content_total {
+ margin-top: 20rpx;
+ margin-bottom: 20rpx;
+ // padding: 24rpx 30rpx;
+ // background: #F7F7F7;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .page_content_title_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #333333;
+
+ // span {
+ // font-size: 24rpx;
+ // color: $nav-color;
+ // }
+ }
+ }
+ }
+
+ .page_content_title_bottom {
+ margin-top: 24rpx;
+
+ span {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .page_content_title {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 10rpx;
+
+
+
+
+ }
+ .bottom {
+ height: 98rpx;
+ .submit {
+ width: 272rpx;
+ height: 98rpx;
+ line-height: 98rpx;
+ }
+ }
+</style>
diff --git a/minipro_standard/components/Tooling.vue b/minipro_standard/components/Tooling.vue
new file mode 100644
index 0000000..8bf3186
--- /dev/null
+++ b/minipro_standard/components/Tooling.vue
@@ -0,0 +1,144 @@
+<template>
+ <u-popup :show="show" position="bottom" :round="10" closeable @close="show=false">
+ <div class="content">
+ <div :class="{ 'content_top': status }" class="content_search">
+ <v-Search ref="V" @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="鎼滅储宸ヨ缂栫爜">
+ </v-Search>
+ <template v-if="classification">
+ <div class="content_search_x"></div>
+ <v-LableSelection :TagList="tagList" :isShow="false" @change="clickTag"></v-LableSelection>
+ </template>
+ </div>
+ <div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
+ <div class="content_list">
+ <u-list>
+ <u-list-item v-for="(item, i) in list" :key="i">
+ <div class="content_list_item" @click="jump(item)">
+ <div class="content_list_item_status success" v-if="item.smodelLabel === Attribute.HG">
+ [{{item.smodelCode}}]</div>
+ <div class="content_list_item_status warning" v-else-if="item.smodelLabel === Attribute.BL">
+ [{{item.smodelCode}}]</div>
+ <div class="content_list_item_status serious" v-else-if="item.smodelLabel === Attribute.BF">
+ [{{item.smodelCode}}]</div>
+ <div class="content_list_item_status black" v-else-if="item.smodelLabel === Attribute.HH">
+ [{{item.smodelCode}}]</div>
+ <div class="content_list_item_name">{{item.cmodel1BigName}}-{{item.code}}</div>
+ </div>
+ </u-list-item>
+ </u-list>
+ </div>
+ </div>
+ </u-popup>
+</template>
+
+<script>
+ import vSearch from '@/components/Search.vue'
+ import vLableSelection from '@/components/LabelSelection.vue'
+ import {
+ Attribute
+ } from '@/common/config.js'
+ export default {
+ name: "Tooling",
+ components: {
+ vSearch,
+ vLableSelection
+ },
+ data() {
+ return {
+ show: false,
+ classification: false,
+ attribute: '',
+ tagList: [],
+ statusname: '1,2,3',
+ list: [],
+ page: {
+ total: 0,
+ size: 10,
+ index: 1
+ }
+ };
+ },
+ methods: {
+ open(target) {
+ this.show = true
+ this.classification = target.classification
+ this.attribute = target.attribute
+ this.statusname = target.statusname
+ },
+ searchInput(v) {},
+ submit() {},
+ clickTag() {},
+ jump(item) {}
+ }
+ }
+</script>
+
+<style lang="scss">
+ .content {
+ .content_code {
+ position: fixed;
+ right: 30rpx;
+ bottom: 100rpx;
+
+ img {
+ width: 138rpx;
+ height: 138rpx;
+ }
+ }
+
+ .content_top {
+ top: 0 !important;
+ }
+
+ .content_search {
+ padding: 30rpx;
+ background: white;
+ position: sticky;
+ top: 88rpx;
+ z-index: 9;
+
+ .content_search_x {
+ height: 24rpx;
+ }
+ }
+
+ .content_total {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .content_list {
+ width: 100%;
+ height: 100%;
+ 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 {
+ font-size: 28rpx;
+ }
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/components/selectMaterial.vue b/minipro_standard/components/selectMaterial.vue
new file mode 100644
index 0000000..c2250fe
--- /dev/null
+++ b/minipro_standard/components/selectMaterial.vue
@@ -0,0 +1,140 @@
+<template>
+ <u-popup :show="show" :round="10" closeable @close="show=false">
+ <view class="material-content bbox p30">
+ <view class="tc b f24 c2">閫夋嫨鐗╂枡</view>
+ <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
+ <u-list-item v-for="(item1, index) in list" :key="index">
+ <view class="" style="height: 20px;" @click="jump(item1)">
+ <div class="page_content_title_top">
+ <span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span>{{ item1.locationName }} / </span>
+ <span>{{ item1.num }}{{ item1.unitName }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="item1.qualityType == 0">鍚堟牸 <span
+ class="c1">/</span> </span>
+ <span class="orange" v-else-if="item1.qualityType == 1">涓嶈壇 <span
+ class="c1">/</span> </span>
+ <span class="red" v-else-if="item1.qualityType == 2">鎶ュ簾 <span
+ class="c1">/</span> </span>
+ <span v-else>- / </span>
+ <span>{{item1.procedureName ? item1.procedureName : '-'}} / </span>
+ <span>{{item1.batch ? item1.batch : '-'}}</span>
+ </div>
+ </view>
+ </u-list-item>
+ </u-list>
+ </view>
+ </u-popup>
+</template>
+
+<script>
+ export default {
+ name: "selectMaterial",
+ data() {
+ return {
+ show: false,
+ pages: {
+ size: 10,
+ index: 1,
+ total: 0
+ },
+ list: [
+ 1, 2, 3, 4, 5, 6, 7, 8
+ ]
+ };
+ },
+ methods: {
+ open(target) {
+ this.show = true
+ this.workorderId = target.workorderId
+ this.deviceId = target.deviceId
+ this.list = []
+ this.pages = {
+ size: 10,
+ index: 1,
+ total: 0
+ }
+ this.loadData()
+ },
+ loadData() {
+ this.list = [{
+ batch: '1',
+ materialName: 'dsadas',
+ materialCode: '1m0001',
+ locationName: 'a浠�2鍙蜂綅',
+ num: '1',
+ unitName: '鍧�',
+ qualityType: 0,
+ procedureName: '鍘嬪埗',
+ }]
+ },
+ scrolltoupper() {
+ console.log('scrolltoupper');
+ this.loadData()
+ },
+ scrolltolower() {
+ console.log('scrolltolower');
+ this.loadData()
+ },
+ jump(item) {
+ this.$emit('selectAction', item)
+ this.show = false
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .material-content {
+ height: 1100rpx;
+ }
+
+ .page_content_title_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #333333;
+
+ // span {
+ // font-size: 24rpx;
+ // color: $nav-color;
+ // }
+ }
+ }
+ }
+
+ .page_content_title_bottom {
+ margin-top: 10rpx;
+
+ span {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .page_content_title {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 10rpx;
+
+
+
+
+ }
+</style>
diff --git a/minipro_standard/components/workOrderInfo.vue b/minipro_standard/components/workOrderInfo.vue
new file mode 100644
index 0000000..67548d6
--- /dev/null
+++ b/minipro_standard/components/workOrderInfo.vue
@@ -0,0 +1,82 @@
+<template>
+ <view class="p30 bg_w order-info">
+ <view class="bX">
+ <view class="cY">
+ <view class="mr10 b">澧欎綋鐮栵綔鐮佸灈</view>
+ <u-tag size="mini" bgColor="#03AF76" text="姝e父"></u-tag>
+ </view>
+ <view class="status" :class="orederMessage.status==0?'wc':orederMessage.status==1?'green':orederMessage.status==3?'blue':orederMessage.status==7?'green':'c6'">{{ stausToStr(1) }}</view>
+ </view>
+ <view class="f24 c6 mt20">宸ュ崟缂栧彿锛歿{ orederMessage.code || 'GD202111240001' }}</view>
+ <view class="mt20 bg_f7 ptb20 plr30 n">
+ <view class="c2 mb20">
+ <span class="c6">鐗╂枡缂栫爜锛�</span>
+ {{ orederMessage.mmodel ? orederMessage.mmodel.code : '03K-0K-0-1' }}
+ </view>
+ <view class="c2 mb20">
+ <span class="c6">璁″垝寮�宸ワ細</span>
+ {{ orederMessage.planDate || '2022/01/11' }}
+ </view>
+ <view class="c2 mb20">
+ <span class="c6">鐢熶骇鎵规锛�</span>
+ {{ orederMessage.batch || 'PH20221023001' }}
+ </view>
+ <view class="c2 mb20">
+ <span class="c6">璁″垝鏁伴噺锛�</span>
+ {{ orederMessage.planNum || '1000' }}{{ orederMessage.umodel ? orederMessage.umodel.name : 'A1' }}
+ </view>
+ <view class="c2 mb20">
+ <span class="c6">鐢熶骇璁惧锛�</span>
+ {{ orederMessage.pgmodel ? `${orederMessage.pgmodel.code} - ${orederMessage.pgmodel.name}` : 'A1' }}
+ </view>
+ <view class="c2 flex">
+ <view class="c6" style="flex-shrink: 0;">鐢熶骇浜哄憳锛�</view>
+ <view class="flex1">
+ {{ orederMessage.proUserList ? orederMessage.proUserList.map(item => item.proUserDepartName).join(' / ') : '渚辰鎱�-鍜屽幙椋為獜鏂板瀷寤烘潗' }}
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name: "workOrderInfo",
+ props: {
+ orederMessage: {}
+ },
+ data() {
+ return {
+ status: [
+ { status: 0, label: '宸插垱寤�' },
+ { status: 1, label: '宸插鏂�' },
+ { status: 2, label: '宸插畬宸ユ' },
+ { status: 3, label: '宸叉楠�' },
+ { status: 4, label: '宸叉姤宸�' },
+ { status: 5, label: '宸插叆搴�' },
+ { status: 6, label: '宸插彇娑�' },
+ { status: 7, label: '杩涜涓�' }
+ ]
+ };
+ },
+ methods: {
+ stausToStr(status) {
+ let temp = this.status.find(item => item.status == status)
+ return temp ? temp.label : '-'
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+.status {
+ height: 26rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ line-height: 26rpx;
+}
+.order-info {
+ border-bottom: 20rpx #f7f7f7 solid;
+}
+</style>
diff --git a/minipro_standard/main.js b/minipro_standard/main.js
index 4686581..af1b29b 100644
--- a/minipro_standard/main.js
+++ b/minipro_standard/main.js
@@ -1,6 +1,7 @@
import Vue from 'vue'
import App from './App'
import mixin from './common/mixin'
+
// 寮曞叆鍏ㄥ眬uView
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
diff --git a/minipro_standard/manifest.json b/minipro_standard/manifest.json
index 0bc644d..16f31cb 100644
--- a/minipro_standard/manifest.json
+++ b/minipro_standard/manifest.json
@@ -1,5 +1,5 @@
{
- "name" : "intelligent_manufacture",
+ "name" : "DM浜戝伐鍘�",
"appid" : "",
"description" : "",
"versionName" : "1.0.0",
@@ -59,11 +59,7 @@
},
"usingComponents" : true,
"requiredPrivateInfos" : [ "getLocation" ],
- "permission" : {
- "scope.userLocation" : {
- "desc" : "瀹炴椂涓婁紶鍥剧墖"
- }
- }
+ "permission" : {}
},
"mp-alipay" : {
"usingComponents" : true
diff --git a/minipro_standard/package-lock.json b/minipro_standard/package-lock.json
new file mode 100644
index 0000000..6fd60cc
--- /dev/null
+++ b/minipro_standard/package-lock.json
@@ -0,0 +1,451 @@
+{
+ "name": "minipro_standard",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "vant": "^4.6.6"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.11.tgz",
+ "integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==",
+ "peer": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "peer": true
+ },
+ "node_modules/@vant/popperjs": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+ "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+ },
+ "node_modules/@vant/use": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+ "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0",
+ "postcss": "^8.1.10",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
+ },
+ "peerDependencies": {
+ "vue": "3.3.4"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "peer": true
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "peer": true
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.3",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
+ "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "peer": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "peer": true
+ },
+ "node_modules/postcss": {
+ "version": "8.4.28",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.28.tgz",
+ "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/vant": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.6.tgz",
+ "integrity": "sha512-UgBfz4d1Ej483WAp6T3HrFZQNKpRW0PoT9mDXqw8JFUuiHgpdeAMyAwuRaYdQiUy4cFTVZ25a/+xyGCTMdvYaA==",
+ "dependencies": {
+ "@vant/popperjs": "^1.3.0",
+ "@vant/use": "^1.5.1",
+ "@vue/shared": "^3.0.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.11.tgz",
+ "integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==",
+ "peer": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "peer": true
+ },
+ "@vant/popperjs": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+ "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+ },
+ "@vant/use": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+ "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+ "requires": {}
+ },
+ "@vue/compiler-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0",
+ "postcss": "^8.1.10",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+ },
+ "csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "peer": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "peer": true
+ },
+ "magic-string": {
+ "version": "0.30.3",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
+ "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+ "peer": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "peer": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "peer": true
+ },
+ "postcss": {
+ "version": "8.4.28",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.28.tgz",
+ "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+ "peer": true,
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "peer": true
+ },
+ "vant": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.6.tgz",
+ "integrity": "sha512-UgBfz4d1Ej483WAp6T3HrFZQNKpRW0PoT9mDXqw8JFUuiHgpdeAMyAwuRaYdQiUy4cFTVZ25a/+xyGCTMdvYaA==",
+ "requires": {
+ "@vant/popperjs": "^1.3.0",
+ "@vant/use": "^1.5.1",
+ "@vue/shared": "^3.0.0"
+ }
+ },
+ "vue": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ }
+ }
+}
diff --git a/minipro_standard/package.json b/minipro_standard/package.json
new file mode 100644
index 0000000..add0140
--- /dev/null
+++ b/minipro_standard/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "vant": "^4.6.6"
+ }
+}
diff --git a/minipro_standard/pages.json b/minipro_standard/pages.json
index 4e8cdef..b334926 100644
--- a/minipro_standard/pages.json
+++ b/minipro_standard/pages.json
@@ -31,7 +31,6 @@
"navigationBarTitleText": "涓汉淇℃伅",
"enablePullDownRefresh": false
}
-
}, {
"path": "pages/changePassword/changePassword",
"style": {
@@ -53,6 +52,208 @@
"enablePullDownRefresh": false
}
+ }, {
+ "path": "pages/plannedProgress/plannedProgress",
+ "style": {
+ "navigationBarTitleText": "璁″垝杩涘害",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/planDetails/planDetails",
+ "style": {
+ "navigationBarTitleText": "璁″垝璇︽儏",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/plannedDistribution/plannedDistribution",
+ "style": {
+ "navigationBarTitleText": "璁″垝鍒嗛厤",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/allocation/allocation",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/inspectComplete/inspectComplete",
+ "style": {
+ "navigationBarTitleText": "瀹屽伐妫�",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/selectWorkOrder/selectWorkOrder",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨宸ュ崟",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/inspectPatrol/inspectPatrol",
+ "style": {
+ "navigationBarTitleText": "宸℃",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "pages/linePatrol/linePatrol",
+ "style": {
+ "navigationBarTitleText": "宸$嚎",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/OutOperation/OutOperation",
+ "style" :
+ {
+ "navigationBarTitleText": "鍑哄簱鎿嶄綔",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/InOperation/InOperation",
+ "style" :
+ {
+ "navigationBarTitleText": "鍏ュ簱鎿嶄綔",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ],
+ "subPackages": [{
+ "root": "pages_adjust",
+ "pages": [{
+ "path": "pages/newOutbound/newOutbound",
+ "style": {
+ "navigationBarTitleText": "鏂板缓鍑哄簱",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/addReceipt/addReceipt",
+ "style": {
+ "navigationBarTitleText": "鏂板缓鍏ュ簱",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/newTransfer/newTransfer",
+ "style": {
+ "navigationBarTitleText": "鏂板缓杞簱",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/manualFeed/manualFeed",
+ "style": {
+ "navigationBarTitleText": "鎵嬪姩鎶曟枡",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/OrderDetail/OrderDetail",
+ "style": {
+ "navigationBarTitleText": "宸ュ崟璇︽儏",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/workOrderReporting/workOrderReporting",
+ "style": {
+ "navigationBarTitleText": "宸ュ崟鎶ュ伐",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/transferList/transferList",
+ "style": {
+ "navigationBarTitleText": "杞簱鍒楄〃",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/warehousingDetails/warehousingDetails",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱璇︽儏",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/outboundList/outboundList",
+ "style": {
+ "navigationBarTitleText": "鍑哄簱鍗曞垪琛�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/outboundDetails/outboundDetails",
+ "style": {
+ "navigationBarTitleText": "鍑哄簱璇︽儏",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/warehousingList/warehousingList",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱鍗曞垪琛�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/warehousingDetails1/warehousingDetails1",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱璇︽儏",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/InventoryQuery/InventoryQuery",
+ "style": {
+ "navigationBarTitleText": "搴撳瓨閲忔煡璇�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/reportingForWork/reportingForWork",
+ "style": {
+ "navigationBarTitleText": "涓�閿姤宸�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/processPlan/processPlan",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨宸ュ簭璁″垝",
+ "enablePullDownRefresh": false
+ }
+ }
+ ]
+ },
+ {
+ "root": "pages_inspect",
+ "pages": [{
+ "path": "pages/InspectionRecords/InspectionRecords",
+ "style": {
+ "navigationBarTitleText": "妫�楠岃褰�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/InspectionDetails/InspectionDetails",
+ "style": {
+ "navigationBarTitleText": "妫�楠岃鎯�",
+ "enablePullDownRefresh": false
+ }
+ }
+ ]
}
],
"globalStyle": {
@@ -60,15 +261,13 @@
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#ffffff",
"backgroundColor": "#ffffff"
- // "navigationStyle": "custom"
},
"tabBar": {
"color": "#666666",
"selectedColor": "#222222",
"borderStyle": "black",
"backgroundColor": "#fff",
- "list": [
- {
+ "list": [{
"pagePath": "pages/index/index",
"iconPath": "static/nav_daiban@2x.png",
"selectedIconPath": "static/nav_daiban_sel@2x.png",
@@ -89,4 +288,4 @@
]
},
"uniIdRouter": {}
-}
+}
\ No newline at end of file
diff --git a/minipro_standard/pages/InOperation/InOperation.vue b/minipro_standard/pages/InOperation/InOperation.vue
new file mode 100644
index 0000000..08839c6
--- /dev/null
+++ b/minipro_standard/pages/InOperation/InOperation.vue
@@ -0,0 +1,686 @@
+<template>
+ <view>
+ <InOutInfo :info="info" />
+
+ <uni-collapse @change="change" @close="close" @open="open">
+ <uni-collapse-item v-for="(item, index) in wtransferWarehouseList" :key="index">
+ <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
+ <image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
+ <view>{{ item.warehouseName }}</view>
+ </view>
+ <view class="p30">
+ <div class="page_dck">
+ <div class="page_dck_title">
+ <div class="page_dck_title_x"></div>
+ <span>寰呭叆搴撶墿鏂�</span>
+ </div>
+ </div>
+ <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index"
+ :name="index">
+ <div class="page_content_title">
+ <div class="page_content_title_top">
+ <span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
+ <span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="item.qualityType === 0">鍚堟牸 <span
+ class="black">/</span> </span>
+ <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 <span
+ class="black">/</span> </span>
+ <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾 <span
+ class="black">/</span> </span>
+ <span v-else>- / </span>
+ <span>{{item.procedureName ? item.procedureName : '-'}} / </span>
+ <span>{{item.batch ? item.batch : '-'}}</span>
+ </div>
+ </div>
+ <div class="page_content_list">
+ <div class="page_content_list_item">
+ <div class="page_content_list_item_label">鍏ュ簱璐т綅锛�</div>
+ <div class="page_content_list_item_nr">
+ {{item.locationName ? item.locationName : '-'}}
+ </div>
+ </div>
+ <div class="page_content_list_items">
+ <div class="page_content_list_item_label">鏁伴噺锛�</div>
+ <div class="page_content_list_item_nr">{{item.num ? item.num : '-'}}{{item.unitName}}
+ </div>
+ </div>
+ </div>
+ </div>
+ </view>
+ </uni-collapse-item>
+ </uni-collapse>
+ <div class="page_h"></div>
+ <div class="page_yxwl">
+ <div class="page_yxwl_title">
+ <div class="left">
+ <div class="page_yxwl_title_x"></div>
+ <span>宸查�夋嫨鐗╂枡</span>
+ </div>
+
+ <div class="right" v-if="isZKD" @click="openxz">
+ <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>鎵嬪姩鍏ュ簱</span>
+ <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
+ </div>
+ </div>
+ <!-- 鍏ュ簱鍗曪紙鍗曚釜浠撳簱锛� -->
+ <template
+ v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
+ <div class="page_yxwl_list">
+ <div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
+ <div class="page_yxwl_list_item_top">
+ <!-- <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}锝渰{item.batch}}</div>-->
+ <div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
+ </div>
+ </div>
+ <div class="page_yxwl_list_item_sx">
+ <span class="green" v-if="item.qualityType === 0">鍚堟牸 <span>/</span> </span>
+ <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 <span>/</span> </span>
+ <span class="red" v-else-if="item.qualityType === 2">鎶ュ簾 <span>/</span> </span>
+ <span>{{item.procedureName ? item.procedureName : '-'}} <span>/</span> </span>
+ <span>{{item.batch ? item.batch : '-'}}</span>
+ </div>
+ <div class="page_yxwl_list_item_num">
+ <div class="dis">
+ <div class="item">
+ <div class="label">鍏ュ簱璐т綅锛�</div>
+ <div class="nr">
+ <span>{{item.locationName ? item.locationName : '-'}}</span>
+ </div>
+ </div>
+ <div class="items">
+ <div class="label">鏁伴噺锛�</div>
+ <div class="nr">
+ <input type="text" v-model="item.scanNum" placeholder="璇疯緭鍏�" />
+ <span>{{item.unitName}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
+ <div class="label">宸ヨ{{item1.scanCode}}锛�</div>
+ <div class="nr">{{item1.num}}{{item1.unitName}}</div>
+ <div class="dele" @click="dele(item1)">
+ <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </template>
+ <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
+ <template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
+ <!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
+ <div class="page_yxwl_list">
+ <div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
+ <div class="page_yxwl_list_item_top">
+ <!-- <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}锝渰{item1.batch}}</div>-->
+ <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
+ </div>
+ </div>
+ <div class="page_yxwl_list_item_sx">
+ <span class="green" v-if="item1.qualityType === 0">鍚堟牸 <span>/</span> </span>
+ <span class="yellow" v-else-if="item1.qualityType === 1">涓嶈壇 <span>/</span> </span>
+ <span class="red" v-else-if="item1.qualityType === 2">鎶ュ簾 <span>/</span> </span>
+ <span>{{item1.procedureName ? item1.procedureName : '-'}} <span>/</span> </span>
+ <span>{{item1.batch ? item1.batch : '-'}}</span>
+ </div>
+ <div class="page_yxwl_list_item_num">
+ <div class="itemy">
+ <div class="itemy_item">
+ <div class="label">鍏ュ簱璐т綅锛�</div>
+ <div class="nr">
+ <span>{{item1.locationName}}</span>
+ </div>
+ </div>
+ <div class="itemy_item">
+ <div class="label">鏁伴噺锛�</div>
+ <div class="nr">
+ <!-- @input="inputNum(item1)" -->
+ <input type="number" v-model="item1.outActnum" placeholder="璇疯緭鍏�" />
+ <span>{{item1.unitName}}</span>
+ </div>
+ </div>
+ <!-- @click="dele()" -->
+ <div class="dele" @click="dele(idx)">
+ <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- </template> -->
+ </template>
+ <div class="page_yxwl_kong" v-else>鏆傛棤鏁版嵁</div>
+ </div>
+ <div class="page_zw"></div>
+ <!-- 鎻愪氦鎸夐挳 -->
+ <div class="page_footer">
+ <div class="page_footer_ck" @click="submit">
+ <span>纭鍏ュ簱</span>
+ </div>
+ </div>
+ <SelectMultipleMaterial ref="selectMultipleMaterial" />
+ </view>
+</template>
+
+<script>
+ import InOutInfo from '@/components/InOutInfo.vue'
+ import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+ import { QRCodeType } from '@/common/config.js'
+ export default {
+ components: {
+ InOutInfo,
+ SelectMultipleMaterial
+ },
+ data() {
+ return {
+ type: '',
+ isZKD: false,
+ show: false,
+ info: {
+ outPlandate: '2022/02/14',
+ originType: 1,
+ wtransferRedisCodeBeanList: [],
+ remark: 'Vue鏄墠绔紑鍙戜腑骞挎硾浣跨敤鐨勪竴涓狫avaScript妗嗘灦锛屽畠鍙互璁╂垜浠洿杞绘澗鍦扮鐞嗛〉闈㈢殑鐘舵�併�佹覆鏌撳拰浜や簰銆備絾鏄湪缂栧啓Vue搴旂敤鏃讹紝鏈夋椂浼氶亣鍒扳�淪yntaxError: Unexpected token鈥濇姤閿欙紝杩欎釜閿欒鎻愮ず鎰忓懗鐫�浠g爜涓瓨鍦ㄨ娉曢敊璇紝JavaScript寮曟搸鏃犳硶瑙f瀽锛屼粠鑰屽鑷寸▼搴忚繍琛屽け璐ャ�傛湰绡囨枃绔犲皢浠嬬粛甯歌寮曡捣鈥淪yntaxError: Unexpected token鈥濈殑鍘熷洜浠ュ強瑙e喅鏂规硶銆�'
+ },
+ ids: [],
+ wtransferWarehouseList: [{
+ warehouseName: '娴嬭瘯搴�'
+ }]
+ };
+ },
+ onLoad(option) {
+ this.type = option.type||'ZKD'
+ this.isZKD = this.type==QRCodeType.ZKD
+ // console.log(this.type, QRCodeType.ZKD, this.type==QRCodeType.ZKD);
+ },
+ methods: {
+ change() {},
+ close() {},
+ open() {},
+ openxz() {
+ let arr = []
+ if (this.info.wtransferRedisCodeBeanList.length !== 0) {
+ this.info.wtransferRedisCodeBeanList.forEach(element => {
+ arr.push(element.appliancesId)
+ })
+ this.ids = arr.join(',')
+ } else {
+ this.ids = ''
+ }
+ this.$refs.selectMultipleMaterial.open({})
+ },
+ }
+ }
+</script>
+
+<style lang="scss">
+ .page_dck {
+ .page_dck_title {
+ display: flex;
+ align-items: center;
+
+ .page_dck_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_content {
+ margin-top: 36rpx;
+
+ .page_content_title {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 10rpx;
+
+ .page_content_title_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #333333;
+
+ span {
+ font-size: 24rpx;
+ color: $nav-color;
+ }
+ }
+ }
+ }
+
+ .page_content_title_bottom {
+ .green {
+ color: $nav-stateColor7 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ .error {
+ color: $nav-stateColor4 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ span {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+ }
+
+ .lineBorder {
+ border: none !important;
+ padding-bottom: 0 !important;
+ margin-bottom: 24rpx;
+ }
+
+ .page_content_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+
+ &:first-child {
+ margin: 0;
+ }
+
+ &:last-child {
+ border: none;
+ }
+
+ .page_content_list_nums {
+ width: 30%;
+ display: flex;
+
+ .page_content_list_num_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .page_content_list_num_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_num {
+ width: 70%;
+ display: flex;
+
+ .page_content_list_num_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .page_content_list_num_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_items {
+ width: 30%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .page_content_list_item_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_item {
+ width: 70%;
+ display: flex;
+
+ .page_content_list_item_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+
+ .page_h {
+ height: 20rpx;
+ }
+
+ .page_yxwl {
+ padding: 30rpx;
+ background: #ffffff;
+
+ .page_yxwl_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .left {
+ display: flex;
+ align-items: center;
+
+ .page_yxwl_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 14rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_yxwl_list {
+ display: flex;
+ flex-direction: column;
+ padding-bottom: 30rpx;
+ border-bottom: 1rpx solid #ececec;
+
+ &:last-child {
+ margin-bottom: 0;
+ border: none;
+ }
+
+ .page_yxwl_list_item {
+ margin-top: 28rpx;
+
+ .page_yxwl_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_list_item_top_left {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .page_yxwl_list_item_sx {
+ display: flex;
+ align-items: center;
+ margin-top: 15rpx;
+ }
+
+ .page_yxwl_list_item_num {
+ display: flex;
+ flex-direction: column;
+
+ // margin-top: 30rpx;
+ &:first-child {
+ margin-top: 0;
+ }
+
+ .dis {
+ display: flex;
+ }
+
+ .itemy {
+ margin-top: 20rpx;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ position: relative;
+
+ .itemy_item {
+ flex: 1;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 35rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #E5E5E5;
+ margin-right: 10rpx;
+ margin-left: 5rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .dele {
+ position: absolute;
+ right: -30rpx;
+ width: 48rpx;
+ height: 48rpx;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+
+ .items {
+ width: 50%;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 40rpx;
+ margin-right: 10rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .item {
+ width: 70%;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 40rpx;
+ margin-right: 10rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .page_yxwl_kong {
+ padding: 50rpx 0;
+ font-size: 25rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+
+ .page_zw {
+ height: 160rpx;
+ }
+
+ .page_footer {
+ width: calc(100% - 60rpx);
+ background: #F7F7F7;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ position: fixed;
+ bottom: 0;
+ left: 30rpx;
+ padding-bottom: 68rpx;
+
+ .page_footer_qr {
+ flex: 1;
+ height: 88rpx;
+ background: #fff;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: $nav-color;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 30rpx;
+ height: 30rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .page_footer_ck {
+ flex: 1;
+ height: 88rpx;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/OutOperation/OutOperation.vue b/minipro_standard/pages/OutOperation/OutOperation.vue
new file mode 100644
index 0000000..e899d02
--- /dev/null
+++ b/minipro_standard/pages/OutOperation/OutOperation.vue
@@ -0,0 +1,685 @@
+<template>
+ <view>
+ <InOutInfo :info="info" />
+ <uni-collapse @change="change" @close="close" @open="open">
+ <uni-collapse-item v-for="(item, index) in wtransferWarehouseList" :key="index">
+ <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
+ <image src="../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
+ <view>{{ item.warehouseName }}</view>
+ </view>
+ <view class="p30">
+ <div class="page_dck">
+ <div class="page_dck_title">
+ <div class="page_dck_title_x"></div>
+ <span>寰呭嚭搴撶墿鏂�</span>
+ </div>
+ </div>
+ <div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index"
+ :name="index">
+ <div class="page_content_title">
+ <div class="page_content_title_top">
+ <span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
+ <span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
+ </div>
+ <div class="page_content_title_bottom">
+ <span class="green" v-if="item.qualityType === 0">鍚堟牸 <span
+ class="black">/</span> </span>
+ <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 <span
+ class="black">/</span> </span>
+ <span class="error" v-else-if="item.qualityType === 2">鎶ュ簾 <span
+ class="black">/</span> </span>
+ <span v-else>- / </span>
+ <span>{{item.procedureName ? item.procedureName : '-'}} / </span>
+ <span>{{item.batch ? item.batch : '-'}}</span>
+ </div>
+ </div>
+ <div class="page_content_list">
+ <div class="page_content_list_item">
+ <div class="page_content_list_item_label">鍑哄簱璐т綅锛�</div>
+ <div class="page_content_list_item_nr">
+ {{item.locationName ? item.locationName : '-'}}
+ </div>
+ </div>
+ <div class="page_content_list_items">
+ <div class="page_content_list_item_label">鏁伴噺锛�</div>
+ <div class="page_content_list_item_nr">{{item.num ? item.num : '-'}}{{item.unitName}}
+ </div>
+ </div>
+ </div>
+ </div>
+ </view>
+ </uni-collapse-item>
+ </uni-collapse>
+ <div class="page_h"></div>
+ <div class="page_yxwl">
+ <div class="page_yxwl_title">
+ <div class="left">
+ <div class="page_yxwl_title_x"></div>
+ <span>宸查�夋嫨鐗╂枡</span>
+ </div>
+
+ <div class="right" v-if="isZKD" @click="openxz">
+ <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>鎵嬪姩鍑哄簱</span>
+ <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
+ </div>
+ </div>
+ <!-- 鍏ュ簱鍗曪紙鍗曚釜浠撳簱锛� -->
+ <template
+ v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
+ <div class="page_yxwl_list">
+ <div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
+ <div class="page_yxwl_list_item_top">
+ <!-- <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}锝渰{item.batch}}</div>-->
+ <div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
+ </div>
+ </div>
+ <div class="page_yxwl_list_item_sx">
+ <span class="green" v-if="item.qualityType === 0">鍚堟牸 <span>/</span> </span>
+ <span class="warning" v-else-if="item.qualityType === 1">涓嶈壇 <span>/</span> </span>
+ <span class="red" v-else-if="item.qualityType === 2">鎶ュ簾 <span>/</span> </span>
+ <span>{{item.procedureName ? item.procedureName : '-'}} <span>/</span> </span>
+ <span>{{item.batch ? item.batch : '-'}}</span>
+ </div>
+ <div class="page_yxwl_list_item_num">
+ <div class="dis">
+ <div class="item">
+ <div class="label">鍑哄簱璐т綅锛�</div>
+ <div class="nr">
+ <span>{{item.locationName ? item.locationName : '-'}}</span>
+ </div>
+ </div>
+ <div class="items">
+ <div class="label">鏁伴噺锛�</div>
+ <div class="nr">
+ <input type="text" v-model="item.scanNum" placeholder="璇疯緭鍏�" />
+ <span>{{item.unitName}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
+ <div class="label">宸ヨ{{item1.scanCode}}锛�</div>
+ <div class="nr">{{item1.num}}{{item1.unitName}}</div>
+ <div class="dele" @click="dele(item1)">
+ <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </template>
+ <!-- 杞簱鍗曪紙澶氫釜浠撳簱锛� -->
+ <template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
+ <!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
+ <div class="page_yxwl_list">
+ <div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
+ <div class="page_yxwl_list_item_top">
+ <!-- <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}锝渰{item1.batch}}</div>-->
+ <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
+ </div>
+ </div>
+ <div class="page_yxwl_list_item_sx">
+ <span class="green" v-if="item1.qualityType === 0">鍚堟牸 <span>/</span> </span>
+ <span class="yellow" v-else-if="item1.qualityType === 1">涓嶈壇 <span>/</span> </span>
+ <span class="red" v-else-if="item1.qualityType === 2">鎶ュ簾 <span>/</span> </span>
+ <span>{{item1.procedureName ? item1.procedureName : '-'}} <span>/</span> </span>
+ <span>{{item1.batch ? item1.batch : '-'}}</span>
+ </div>
+ <div class="page_yxwl_list_item_num">
+ <div class="itemy">
+ <div class="itemy_item">
+ <div class="label">鍏ュ簱璐т綅锛�</div>
+ <div class="nr">
+ <span>{{item1.locationName}}</span>
+ </div>
+ </div>
+ <div class="itemy_item">
+ <div class="label">鏁伴噺锛�</div>
+ <div class="nr">
+ <!-- @input="inputNum(item1)" -->
+ <input type="number" v-model="item1.outActnum" placeholder="璇疯緭鍏�" />
+ <span>{{item1.unitName}}</span>
+ </div>
+ </div>
+ <!-- @click="dele()" -->
+ <div class="dele" @click="dele(idx)">
+ <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- </template> -->
+ </template>
+ <div class="page_yxwl_kong" v-else>鏆傛棤鏁版嵁</div>
+ </div>
+ <div class="page_zw"></div>
+ <!-- 鎻愪氦鎸夐挳 -->
+ <div class="page_footer">
+ <div class="page_footer_ck" @click="submit">
+ <span>纭鍑哄簱</span>
+ </div>
+ </div>
+ <SelectMultipleMaterial ref="selectMultipleMaterial" />
+ </view>
+</template>
+
+<script>
+ import InOutInfo from '@/components/InOutInfo.vue'
+ import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+ import { QRCodeType } from '@/common/config.js'
+ export default {
+ components: {
+ InOutInfo,
+ SelectMultipleMaterial
+ },
+ data() {
+ return {
+ type: '',
+ isZKD: false,
+ show: false,
+ info: {
+ outPlandate: '2022/02/14',
+ originType: 1,
+ wtransferRedisCodeBeanList: [],
+ remark: 'Vue鏄墠绔紑鍙戜腑骞挎硾浣跨敤鐨勪竴涓狫avaScript妗嗘灦锛屽畠鍙互璁╂垜浠洿杞绘澗鍦扮鐞嗛〉闈㈢殑鐘舵�併�佹覆鏌撳拰浜や簰銆備絾鏄湪缂栧啓Vue搴旂敤鏃讹紝鏈夋椂浼氶亣鍒扳�淪yntaxError: Unexpected token鈥濇姤閿欙紝杩欎釜閿欒鎻愮ず鎰忓懗鐫�浠g爜涓瓨鍦ㄨ娉曢敊璇紝JavaScript寮曟搸鏃犳硶瑙f瀽锛屼粠鑰屽鑷寸▼搴忚繍琛屽け璐ャ�傛湰绡囨枃绔犲皢浠嬬粛甯歌寮曡捣鈥淪yntaxError: Unexpected token鈥濈殑鍘熷洜浠ュ強瑙e喅鏂规硶銆�'
+ },
+ ids: [],
+ wtransferWarehouseList: [{
+ warehouseName: '娴嬭瘯搴�'
+ }]
+ };
+ },
+ onLoad(option) {
+ this.type = option.type||'ZKD'
+ this.isZKD = this.type==QRCodeType.ZKD
+ // console.log(this.type, QRCodeType.ZKD, this.type==QRCodeType.ZKD);
+ },
+ methods: {
+ change() {},
+ close() {},
+ open() {},
+ openxz() {
+ let arr = []
+ if (this.info.wtransferRedisCodeBeanList.length !== 0) {
+ this.info.wtransferRedisCodeBeanList.forEach(element => {
+ arr.push(element.appliancesId)
+ })
+ this.ids = arr.join(',')
+ } else {
+ this.ids = ''
+ }
+ this.$refs.selectMultipleMaterial.open({})
+ },
+ }
+ }
+</script>
+
+<style lang="scss">
+ .page_dck {
+ .page_dck_title {
+ display: flex;
+ align-items: center;
+
+ .page_dck_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_content {
+ margin-top: 36rpx;
+
+ .page_content_title {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 10rpx;
+
+ .page_content_title_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #333333;
+
+ span {
+ font-size: 24rpx;
+ color: $nav-color;
+ }
+ }
+ }
+ }
+
+ .page_content_title_bottom {
+ .green {
+ color: $nav-stateColor7 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ .error {
+ color: $nav-stateColor4 !important;
+
+ .black {
+ color: black !important;
+ }
+ }
+
+ span {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+ }
+
+ .lineBorder {
+ border: none !important;
+ padding-bottom: 0 !important;
+ margin-bottom: 24rpx;
+ }
+
+ .page_content_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+
+ &:first-child {
+ margin: 0;
+ }
+
+ &:last-child {
+ border: none;
+ }
+
+ .page_content_list_nums {
+ width: 30%;
+ display: flex;
+
+ .page_content_list_num_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .page_content_list_num_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_num {
+ width: 70%;
+ display: flex;
+
+ .page_content_list_num_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .page_content_list_num_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_items {
+ width: 30%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .page_content_list_item_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+
+ .page_content_list_item {
+ width: 70%;
+ display: flex;
+
+ .page_content_list_item_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .page_content_list_item_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+
+ .page_h {
+ height: 20rpx;
+ }
+
+ .page_yxwl {
+ padding: 30rpx;
+ background: #ffffff;
+
+ .page_yxwl_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .left {
+ display: flex;
+ align-items: center;
+
+ .page_yxwl_title_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 16rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 14rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .page_yxwl_list {
+ display: flex;
+ flex-direction: column;
+ padding-bottom: 30rpx;
+ border-bottom: 1rpx solid #ececec;
+
+ &:last-child {
+ margin-bottom: 0;
+ border: none;
+ }
+
+ .page_yxwl_list_item {
+ margin-top: 28rpx;
+
+ .page_yxwl_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .page_yxwl_list_item_top_left {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .page_yxwl_list_item_sx {
+ display: flex;
+ align-items: center;
+ margin-top: 15rpx;
+ }
+
+ .page_yxwl_list_item_num {
+ display: flex;
+ flex-direction: column;
+
+ // margin-top: 30rpx;
+ &:first-child {
+ margin-top: 0;
+ }
+
+ .dis {
+ display: flex;
+ }
+
+ .itemy {
+ margin-top: 20rpx;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ position: relative;
+
+ .itemy_item {
+ flex: 1;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 35rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #E5E5E5;
+ margin-right: 10rpx;
+ margin-left: 5rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .dele {
+ position: absolute;
+ right: -30rpx;
+ width: 48rpx;
+ height: 48rpx;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+
+ .items {
+ width: 50%;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 40rpx;
+ margin-right: 10rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .item {
+ width: 70%;
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+
+ input {
+ width: 100rpx;
+ height: 40rpx;
+ margin-right: 10rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .page_yxwl_kong {
+ padding: 50rpx 0;
+ font-size: 25rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+
+ .page_zw {
+ height: 160rpx;
+ }
+
+ .page_footer {
+ width: calc(100% - 60rpx);
+ background: #F7F7F7;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ position: fixed;
+ bottom: 0;
+ left: 30rpx;
+ padding-bottom: 68rpx;
+
+ .page_footer_qr {
+ flex: 1;
+ height: 88rpx;
+ background: #fff;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: $nav-color;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 30rpx;
+ height: 30rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .page_footer_ck {
+ flex: 1;
+ height: 88rpx;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/allocation/allocation.vue b/minipro_standard/pages/allocation/allocation.vue
new file mode 100644
index 0000000..43022fc
--- /dev/null
+++ b/minipro_standard/pages/allocation/allocation.vue
@@ -0,0 +1,269 @@
+<template>
+ <view class="fp">
+ <view class="fp_list">
+ <view class="fp_list_item">
+ <view class="fp_list_item_left">
+ <text style="color: #f00;">*</text>
+ <text>璁″垝鐢熶骇鏁伴噺锛�</text>
+ </view>
+ <view class="fp_list_item_right">
+ <u--input placeholder="璇疯緭鍏�" :customStyle="{width: '180rpx'}" inputAlign="right" type="number" border="surround" v-model="form.num"></u--input>
+ </view>
+ </view>
+ <view class="fp_list_item">
+ <view class="fp_list_item_left">
+ <text style="color: #f00;">*</text>
+ <text>璁″垝寮�宸ユ棩鏈燂細</text>
+ </view>
+ <view class="fp_list_item_right" @click="timeShow = true">
+ <text class="black" v-if="form.startTime">{{form.startTime}}</text>
+ <text v-else>骞� / 鏈� / 鏃�</text>
+ <u-icon name="arrow-right" color="#999999"></u-icon>
+ </view>
+ </view>
+ <view class="fp_list_item" @click="show = true">
+ <view class="fp_list_item_left">
+ <text>鐢熶骇璁惧</text>
+ </view>
+ <view class="fp_list_item_right">
+ <text v-if="form.equipmentName" class="black">{{form.equipmentName}}</text>
+ <text v-else>璇烽�夋嫨</text>
+ <u-icon name="arrow-right" color="#999999"></u-icon>
+ </view>
+ </view>
+ <view class="fp_list_item1" v-show="form.equipmentName">
+ <view class="fp_list_item_left">
+ <text>鐢熶骇浜哄憳</text>
+ </view>
+ <view class="fp_list_item_right">
+ <u-checkbox-group v-model="form.personnelId" v-show="personnelData.length > 0">
+ <u-checkbox :name="item.id" v-for="(item, index) in personnelData" :key="index" activeColor="#4275FC">{{item.text}}</u-checkbox>
+ </u-checkbox-group>
+ <view class="wu" v-show="personnelData.length === 0">
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="fp_footer">
+ <view class="fp_footer_close" @click="go">鍙栨秷</view>
+ <button class="fp_footer_submit" @click="submit">纭</button>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+ <!-- 閫夋嫨璁惧 -->
+ <u-picker :show="show" :columns="columns" @confirm="confirm" @cancel="show = false" keyName="label"></u-picker>
+ </view>
+</template>
+
+<script>
+ import { gsdate } from '@/util/utils.js'
+ export default {
+ data() {
+ return {
+ show: false,
+ columns: [[{ label: '璁惧涓�' }]],
+ form: {
+ num: '', // 鐢熶骇鏁伴噺
+ startTime: gsdate(new Date()), // 寮�濮嬫椂闂�
+ equipmentId: '', // 璁惧id
+ equipmentName: '', // 璁惧鍚嶇О
+ personnelId: [] // 浜哄憳id
+ },
+ personnelData: [], // 浜哄憳鏁版嵁
+ timeShow: false
+ };
+ },
+ onLoad(option) {
+ this.form.num = option.num
+ },
+ methods: {
+ go() {
+ uni.navigateBack({ delta: 1 });
+ },
+ confirm(val) {
+ this.form.equipmentName = val.value[0].label
+ this.form.equipmentId = 1
+ this.show = false
+ },
+ timeConfirm(val) {
+ this.form.startTime = val[0]
+ this.timeShow = false
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+.fp {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+ .fp_list {
+ display: flex;
+ flex-direction: column;
+ .fp_list_item1 {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ border-bottom: 1rpx solid #ececec;
+ .fp_list_item_left {
+ flex-shrink: 0;
+ margin-bottom: 20rpx;
+ display: flex;
+ align-items: center;
+ text {
+ color: #222222;
+ font-size: 30rpx;
+ font-weight: 400;
+ }
+ }
+ .fp_list_item_right {
+ display: flex;
+ align-items: center;
+ .wu {
+ width: 100%;
+ margin: 30rpx 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text {
+ font-size: 26rpx;
+ color: black;
+ }
+ }
+ .van-checkbox {
+ margin-right: 5rpx !important;
+ margin-top: 10rpx !important;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ &:nth-child(2) {
+ margin-top: 0 !important;
+ }
+ &:nth-child(3) {
+ margin-top: 0 !important;
+ }
+ .van-checkbox__label {
+ color: black !important;
+ }
+ }
+ .black {
+ color: black !important;
+ }
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #E5E5E5;
+ padding: 0 30rpx;
+ text-align: right;
+ font-size: 25rpx;
+ }
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 20rpx;
+ }
+ }
+ }
+ .fp_list_item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 30rpx;
+ height: 98rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ border-bottom: 1rpx solid #ececec;
+ .fp_list_item_left {
+ flex-shrink: 0;
+ b {
+ color: $nav-stateColor4;
+ font-size: 28rpx;
+ margin-right: 5rpx;
+ }
+ text {
+ color: #222222;
+ font-size: 30rpx;
+ font-weight: 400;
+ }
+ }
+ .fp_list_item_right {
+ display: flex;
+ align-items: center;
+ .wu {
+ text-align: center;
+ text {
+ font-size: 26rpx;
+ color: black;
+ }
+ }
+ .black {
+ color: black !important;
+ }
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #E5E5E5;
+ padding: 0 30rpx;
+ text-align: right;
+ font-size: 25rpx;
+ }
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 20rpx;
+ }
+ }
+ }
+ }
+ .fp_footer {
+ width: 100%;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ padding-bottom: 68rpx;
+ box-sizing: border-box;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .fp_footer_close {
+ width: 334rpx;
+ height: 88rpx;
+ background: #FFFFFF;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #666666;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .fp_footer_submit {
+ width: 334rpx;
+ height: 88rpx;
+ border: none;
+ 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;
+ }
+ }
+}
+</style>
diff --git a/minipro_standard/pages/changePassword/changePassword.vue b/minipro_standard/pages/changePassword/changePassword.vue
index a975dd8..311f0d2 100644
--- a/minipro_standard/pages/changePassword/changePassword.vue
+++ b/minipro_standard/pages/changePassword/changePassword.vue
@@ -25,7 +25,7 @@
</view>
</view>
<view class="password_footer">
- <button v-preventReClick class="password_footer_submit">
+ <button class="password_footer_submit" @click="submit">
<text>瀹屾垚</text>
</button>
</view>
@@ -33,6 +33,7 @@
</template>
<script>
+ import { updatePwd } from '@/util/api/PersonalAPI'
export default {
data() {
return {
@@ -42,6 +43,38 @@
confirmPassword: ''
}
};
+ },
+ methods: {
+ // 蹇樿瀵嗙爜
+ forgotPassword() {
+
+ },
+ // 鎻愪氦淇敼
+ submit() {
+ if (!this.form.originalPassword) {
+ uni.showToast({ title: '鍘熷瘑鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+ } else if (!this.form.newPassword) {
+ uni.showToast({ title: '鏂板瘑鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+ } else if (!/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{6,}$/.test(this.form.newPassword)) {
+ uni.showToast({ title: '瀵嗙爜鏍煎紡涓嶆纭�', icon: 'none', duration: 2000 });
+ } else if (!this.form.confirmPassword) {
+ uni.showToast({ title: '纭瀵嗙爜涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ } else if (this.form.newPassword !== this.form.confirmPassword) {
+ uni.showToast({ title: '涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�', icon: 'none', duration: 2000 });
+ } else {
+ updatePwd({
+ newPwd: this.form.newPassword,
+ oldPwd: this.form.originalPassword
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({ title: '淇敼鎴愬姛', icon: 'success', duration: 2000, mask: true });
+ setTimeout(() => {
+ uni.navigateBack({ delta: 1 });
+ }, 2000)
+ }
+ })
+ }
+ }
}
}
</script>
diff --git a/minipro_standard/pages/index/index.vue b/minipro_standard/pages/index/index.vue
index 225d435..9c02c28 100644
--- a/minipro_standard/pages/index/index.vue
+++ b/minipro_standard/pages/index/index.vue
@@ -1,12 +1,75 @@
<template>
<view class="index">
<!-- <web-view v-if="show" @onPostMessage="onMessage" :src="'https://dmtest.ahapp.net/doumeeplant_h5/#/appletLogin?code=' + code"></web-view> -->
+ <!-- {{$store.state.statusbarHeight}} -->
+
+ <u-sticky>
+ <view class="plr50 pb30 nav-style">
+ <view
+ :style="{paddingTop: `${statusbarHeight}px`, height: `${navHeight}px`, lineHeight:`${navHeight}px`, textAlign: 'center'}">
+ 寰呭姙</view>
+ <view class="cY">
+ <u-search placeholder="鎼滅储鍏抽敭瀛�" bgColor="#f7f7f7" :showAction="false" @search="scrolltoupper"
+ shape="square" v-model="searchForm.name"></u-search>
+ <image src="../../static/filter@2x.png" class="img48 ml20" @click="filterAction" mode=""></image>
+ </view>
+ <view class="cY mt30">
+ <view class="sbtn rd8" :class="searchForm.status==0?'sbtn_green':'sbtn_black_rim'"
+ @click="selectType(0)">寰呭姙</view>
+ <view class="sbtn rd8 ml20" :class="searchForm.status==1?'sbtn_green':'sbtn_black_rim'"
+ @click="selectType(1)">宸插姙</view>
+ </view>
+ </view>
+ </u-sticky>
+
+ <u-list :showScrollbar="false" @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper"
+ :height="windowHeight - (statusbarHeight + navHeight + 120) + 'px'">
+ <u-list-item v-for="(item, index) in projectList" :key="index">
+ <view class="box_list">
+ <view class="box_list_item" @click="jump(item)">
+ <view class="box_list_item_icon">
+ <image src="../../static/daiban_ic_daiban@2x.png" mode=""></image>
+ </view>
+ <view class="box_list_item_nr">
+ <view class="box_list_item_nr_top">
+ <span>{{item.title}}</span>
+ <span>{{item.createTime}}</span>
+ </view>
+ <view class="box_list_item_nr_bottom">
+ {{item.content}}
+ </view>
+ </view>
+ </view>
+ </view>
+ </u-list-item>
+ </u-list>
+ <u-popup :show="show" @close="close" :round="8" zIndex="20000">
+ <view class="rp p40 contanir">
+ <view class="c2 b">绫诲瀷</view>
+ <view class="content">
+ <u-grid col="2" :border="false">
+ <u-grid-item v-for="item in types" :key="item.id">
+ <view class="ptb20 c9 type-style tc rd10"
+ :class="type===item.id?'sbtn_green':'sbtn_gray'"
+ @click="type=item.id">{{ item.name }}</view>
+ </u-grid-item>
+ </u-grid>
+ </view>
+ <view class="flex ap tc bottom-view">
+ <view class="fx1 ptb20 sbtn_gray c9" @click="resetType">閲嶇疆</view>
+ <view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
<myTabbar :index="0" />
</view>
</template>
<script>
- import myTabbar from "@/components/myTabber.vue"
+ import myTabbar from "@/components/myTabber.vue"
+ import {
+ mapState
+ } from 'vuex'
export default {
components: {
myTabbar
@@ -14,23 +77,212 @@
data() {
return {
code: '',
- show: false
+ windowHeight: '',
+ show: false,
+ types: [{
+ id: 0,
+ name: '杞﹂棿棰嗘枡-寰呭彂璐�'
+ },
+ {
+ id: 1,
+ name: '杞﹂棿棰嗘枡-寰呭叆搴�'
+ },
+ {
+ id: 2,
+ name: '鏈哄彴澶囨枡-寰呭彂璐�'
+ },
+ {
+ id: 3,
+ name: '鏈哄彴澶囨枡-寰呭叆搴�'
+ },
+ {
+ id: 4,
+ name: '瀹屽伐鍏ュ簱-寰呮帴鏀�'
+ },
+ {
+ id: 5,
+ name: '搴撳瓨杞簱-寰呭彂璐�'
+ },
+ {
+ id: 6,
+ name: '搴撳瓨杞簱-寰呭叆搴�'
+ },
+ {
+ id: 7,
+ name: '鐢宠瀹℃壒'
+ },
+ {
+ id: 8,
+ name: '瀹㈤��/杩斿搧鍥炲巶妫�楠�'
+ }
+ ],
+ type: '',
+ searchForm: {
+ name: '',
+ status: 0,
+ type: ''
+ },
+ projectList: [{
+ title: '212132',
+ createTime: '2023-08-28',
+ content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+ },
+ {
+ title: '212132',
+ createTime: '2023-08-28',
+ content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+ },
+ {
+ title: '212132',
+ createTime: '2023-08-28',
+ content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+ },
+ {
+ title: '212132',
+ createTime: '2023-08-28',
+ content: 'asdsadsax鎵嬫墦澶ц惃杈剧殑鍟婂疄鎵揳s'
+ },
+ ]
}
},
+ computed: {
+ ...mapState(['statusbarHeight', 'navHeight']),
+ },
onLoad() {
+ uni.getSystemInfo({
+ success: res => {
+ this.windowHeight = res.windowHeight
+ }
+ })
+
var that = this
uni.login({
provider: 'weixin',
- success: function (loginRes) {
+ success: function(loginRes) {
// console.log(loginRes);
that.code = loginRes.code
- that.show = true
}
});
},
methods: {
- onMessage(e) {
- console.log('12345654321')
+ scrolltolower() {},
+ scrolltoupper() {},
+ selectType(status) {
+ if (this.searchForm.status == status) return
+ this.searchForm.status = status
+ this.scrolltoupper()
+ },
+ jump(item) {
+ if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 0) { // 璺宠浆鍑哄簱(杞簱鍗�)
+ router.push({
+ name: 'issueOperation',
+ query: {
+ id: item.objId,
+ dbid: item.id,
+ type: 7
+ }
+ })
+ } else if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 1) {
+ router.push({
+ name: 'wTransferDetail',
+ query: {
+ id: item.objId,
+ status: item.status,
+ type: item.type,
+ dbid: item.id
+ }
+ })
+ // router.push({ name: 'wTransferDetail', query: { id: item.objId, status: 0, type: item.type, dbid: item.id } })
+ } else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 0) { // 璺宠浆鍏ュ簱(杞簱鍗�)
+ if (item.type === 4) { // 璺宠浆瀹屽伐鍏ュ簱璇︽儏
+ router.push({
+ name: 'completionDetails',
+ query: {
+ id: item.objId,
+ dbid: item.id,
+ type: 7,
+ isShow: 1,
+ Type: item.type
+ }
+ })
+ return
+ }
+ router.push({
+ name: 'warehousing',
+ query: {
+ id: item.objId,
+ dbid: item.id,
+ type: 7
+ }
+ })
+ } else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 1) {
+ if (item.type === 4) { // 璺宠洓瀹屽伐鍏ュ簱璇︽儏
+ router.push({
+ name: 'completionDetails',
+ query: {
+ id: item.objId,
+ dbid: item.id,
+ type: 7,
+ isShow: 2
+ }
+ })
+ return
+ }
+ router.push({
+ name: 'wTransferDetail',
+ query: {
+ id: item.objId
+ }
+ })
+ } else if (item.type === 3 && item.status === 0) { // 纭澶囨枡
+ router.push({
+ name: 'orderStock',
+ query: {
+ id: item.objId,
+ dbid: item.id
+ }
+ })
+ } else if (item.type === 3 && item.status === 1) { // 澶囨枡锛堣浆搴撳崟璇︽儏锛�
+ // router.push({ name: 'wInboundDetail', query: { id: item.objId } })
+ router.push({
+ name: 'wTransferDetail',
+ query: {
+ id: item.objId
+ }
+ })
+ } else if (item.type === 9 && item.status === 0) { // 璋冩暣鍏ュ簱(鍏ュ簱鍗�)
+ router.push({
+ name: 'warehousing',
+ query: {
+ id: item.objId,
+ dbid: item.id,
+ type: 9
+ }
+ })
+ } else if (item.type === 9 && item.status === 1) {
+ router.push({
+ name: 'wInboundDetail',
+ query: {
+ id: item.objId
+ }
+ })
+ }
+ },
+ filterAction() {
+ this.show = true
+ },
+ close() {
+ this.show = false
+ },
+ resetType() {
+ this.type = ''
+ this.searchForm.type = ''
+ this.confirm()
+ },
+ confirm() {
+ this.searchForm.type = this.type
+ this.show = false
+ this.scrolltoupper()
}
}
}
@@ -41,4 +293,114 @@
width: 100vw;
height: 100vh;
}
+
+ .nav-style {
+ border-bottom: 20rpx #f7f7f7 solid;
+ }
+
+ .box_list {
+ width: 100%;
+ padding: 0 30rpx;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+
+ .box_list_item {
+ padding: 30rpx 0;
+ display: flex;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none;
+ }
+
+ .box_list_item_icon {
+ flex-shrink: 0;
+ width: 64rpx;
+ height: 64rpx;
+ margin-right: 24rpx;
+ position: relative;
+
+ .box_list_item_icon_active {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 18rpx;
+ height: 18rpx;
+ border-radius: 50%;
+ background: #DE5243;
+ border: 2rpx solid #FFFFFF;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .box_list_item_nr {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .box_list_item_nr_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ &:first-child {
+ font-size: 30rpx;
+ font-weight: 500;
+ max-width: 450rpx;
+ color: #222222;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ }
+
+ &:last-child {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-left: 10rpx;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ }
+ }
+ }
+
+ .box_list_item_nr_bottom {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ margin-top: 16rpx;
+ word-break: break-all;
+ }
+ }
+ }
+ }
+
+ .contanir {
+ height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+ .content {
+ margin-top: 20rpx;
+
+ .type-style {
+ width: 325rpx;
+ margin-bottom: 20rpx;
+ }
+ }
+ }
+
+ .bottom-view {
+ left: 40rpx;
+ right: 40rpx;
+ bottom: 0
+ }
</style>
diff --git a/minipro_standard/pages/inspectComplete/inspectComplete.vue b/minipro_standard/pages/inspectComplete/inspectComplete.vue
new file mode 100644
index 0000000..72f566e
--- /dev/null
+++ b/minipro_standard/pages/inspectComplete/inspectComplete.vue
@@ -0,0 +1,228 @@
+<template>
+ <view class="inspection">
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>妫�楠岀被鍨�</span>
+ <div class="right">
+ <div class="right_item active">瀹屽伐妫�</div>
+ <!-- <div class="right_item active" v-if="form.status == '1'">宸℃</div>
+ <div class="right_item active" v-if="form.status == '2'">瀹屽伐妫�</div> -->
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item" @click="jumpGD">
+ <span>妫�楠屽伐鍗�</span>
+ <div class="right1">
+ <span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ <div class="inspection_list_item" v-if="form.gdmc">
+ <span>璁″垝鏁伴噺</span>
+ <div class="right1">
+ <span
+ style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>鑹搧鏁�</span>
+ <div class="right1">
+ <input type="number" v-model="form.hgsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item">
+ <span>涓嶈壇鏁伴噺</span>
+ <div class="right1">
+ <input type="number" v-model="form.blsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+ <span>涓嶈壇璇存槑</span>
+ <div class="right1">
+ <span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ </div>
+ <div class="inspection_footer">
+ <button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+ </div>
+ <u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ info: {},
+ show1: false,
+ columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+ columns1: [],
+ form: {
+ status: '0',
+ gdid: '',
+ gdmc: '',
+ jygz: '',
+ jygzmc: '',
+ hgsl: 0,
+ blsl: 1,
+ blgz: '',
+ blgzmc: '',
+ blsm: '',
+ dw: ''
+ }
+ };
+ },
+ onLoad() {
+ uni.$on('workOrder', (data) => {
+ this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+ this.form.gdid = data.id
+ this.info = data
+
+ })
+ },
+ methods: {
+ jumpGD() {
+ uni.navigateTo({
+ url: '/pages/selectWorkOrder/selectWorkOrder'
+ })
+ },
+ openBL() {},
+ getValue1() {},
+ selectBad() {
+ console.log('------0-----');
+ this.show1 = true
+ },
+ badConfirm(value) {
+ console.log(value);
+ this.show1 = false
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .inspection {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+
+ .x {
+ height: 20rpx;
+ }
+
+ .inspection_list {
+ padding: 0 30rpx;
+ background: white;
+
+ .inspection_list_item {
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none;
+ }
+
+ span {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ .right1 {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 10rpx;
+ }
+
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #CCCCCC;
+ margin-right: 10rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ }
+
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+
+ .dw {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ .active {
+ background: $nav-color !important;
+ color: #ffffff !important;
+ }
+
+ .right_item {
+ padding: 18rpx 32rpx;
+ background: #F2F2F2;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ }
+
+ .inspection_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: calc(100% - 60rpx);
+ padding: 30rpx 30rpx 68rpx 30rpx;
+ background: #F7F7F7;
+
+ .inspection_footer_sub {
+ width: 100%;
+ height: 88rpx;
+ background: #4275FC;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: none;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/inspectPatrol/inspectPatrol.vue b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
new file mode 100644
index 0000000..be1dace
--- /dev/null
+++ b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
@@ -0,0 +1,227 @@
+<template>
+ <view class="inspection">
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>妫�楠岀被鍨�</span>
+ <div class="right">
+ <div class="right_item active">宸℃</div>
+ <!-- <div class="right_item active" v-if="form.status == '1'">宸℃</div>
+ <div class="right_item active" v-if="form.status == '2'">瀹屽伐妫�</div> -->
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item" @click="jumpGD">
+ <span>妫�楠屽伐鍗�</span>
+ <div class="right1">
+ <span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ <div class="inspection_list_item" v-if="form.gdmc">
+ <span>璁″垝鏁伴噺</span>
+ <div class="right1">
+ <span
+ style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>鑹搧鏁�</span>
+ <div class="right1">
+ <input type="number" v-model="form.hgsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item">
+ <span>涓嶈壇鏁伴噺</span>
+ <div class="right1">
+ <input type="number" v-model="form.blsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+ <span>涓嶈壇璇存槑</span>
+ <div class="right1">
+ <span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ </div>
+ <div class="inspection_footer">
+ <button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+ </div>
+ <u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ info: {},
+ show1: false,
+ columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+ columns1: [],
+ form: {
+ status: '0',
+ gdid: '',
+ gdmc: '',
+ jygz: '',
+ jygzmc: '',
+ hgsl: 0,
+ blsl: 1,
+ blgz: '',
+ blgzmc: '',
+ blsm: '',
+ dw: ''
+ }
+ };
+ },
+ onLoad() {
+ uni.$on('workOrder', (data) => {
+ this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+ this.form.gdid = data.id
+ this.info = data
+
+ })
+ },
+ methods: {
+ jumpGD() {
+ uni.navigateTo({
+ url: '/pages/selectWorkOrder/selectWorkOrder'
+ })
+ },
+ openBL() {},
+ getValue1() {},
+ selectBad() {
+ console.log('------0-----');
+ this.show1 = true
+ },
+ badConfirm(value) {
+ this.show1 = false;
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .inspection {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+
+ .x {
+ height: 20rpx;
+ }
+
+ .inspection_list {
+ padding: 0 30rpx;
+ background: white;
+
+ .inspection_list_item {
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none;
+ }
+
+ span {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ .right1 {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 10rpx;
+ }
+
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #CCCCCC;
+ margin-right: 10rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ }
+
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+
+ .dw {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ .active {
+ background: $nav-color !important;
+ color: #ffffff !important;
+ }
+
+ .right_item {
+ padding: 18rpx 32rpx;
+ background: #F2F2F2;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ }
+
+ .inspection_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: calc(100% - 60rpx);
+ padding: 30rpx 30rpx 68rpx 30rpx;
+ background: #F7F7F7;
+
+ .inspection_footer_sub {
+ width: 100%;
+ height: 88rpx;
+ background: #4275FC;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: none;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/linePatrol/linePatrol.vue b/minipro_standard/pages/linePatrol/linePatrol.vue
new file mode 100644
index 0000000..094111a
--- /dev/null
+++ b/minipro_standard/pages/linePatrol/linePatrol.vue
@@ -0,0 +1,225 @@
+<template>
+ <view class="inspection">
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>妫�楠岀被鍨�</span>
+ <div class="right">
+ <div class="right_item active">宸$嚎</div>
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item" @click="jumpGD">
+ <span>妫�楠屽伐鍗�</span>
+ <div class="right1">
+ <span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '鐐瑰嚮閫夋嫨妫�楠屽伐鍗�'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ <div class="inspection_list_item" v-if="form.gdmc">
+ <span>璁″垝鏁伴噺</span>
+ <div class="right1">
+ <span
+ style="color: black;">{{info.planNum}}{{info.umodel ? info.umodel.name : ''}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="x"></div>
+ <div class="inspection_list">
+ <div class="inspection_list_item">
+ <span>鑹搧鏁�</span>
+ <div class="right1">
+ <input type="number" v-model="form.hgsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item">
+ <span>涓嶈壇鏁伴噺</span>
+ <div class="right1">
+ <input type="number" v-model="form.blsl" placeholder="0" />
+ <span class="dw" v-if="info.umodel">{{info.umodel.name}}</span>
+ </div>
+ </div>
+ <div class="inspection_list_item" @click="selectBad" v-show="form.blsl > 0">
+ <span>涓嶈壇璇存槑</span>
+ <div class="right1">
+ <span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '鐐瑰嚮閫夋嫨涓嶈壇鍘熷洜'}}</span>
+ <u-icon name="arrow-right" color="#999999" size="18" />
+ </div>
+ </div>
+ </div>
+ <div class="inspection_footer">
+ <button class="inspection_footer_sub" @click="submit" v-preventReClick>鎻愪氦</button>
+ </div>
+ <u-picker :show="show1" title="璇烽�夋嫨涓嶈壇璇存槑" :columns="columns" @cancel="show1=false" @confirm="badConfirm"></u-picker>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ info: {},
+ show1: false,
+ columns: [['涓浗', '缇庡浗', '鏃ユ湰']],
+ columns1: [],
+ form: {
+ status: '0',
+ gdid: '',
+ gdmc: '',
+ jygz: '',
+ jygzmc: '',
+ hgsl: 0,
+ blsl: 1,
+ blgz: '',
+ blgzmc: '',
+ blsm: '',
+ dw: ''
+ }
+ };
+ },
+ onLoad() {
+ uni.$on('workOrder', (data) => {
+ this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
+ this.form.gdid = data.id
+ this.info = data
+
+ })
+ },
+ methods: {
+ jumpGD() {
+ uni.navigateTo({
+ url: '/pages/selectWorkOrder/selectWorkOrder'
+ })
+ },
+ openBL() {},
+ getValue1() {},
+ selectBad() {
+ console.log('------0-----');
+ this.show1 = true
+ },
+ badConfirm() {
+ this.show1 = false;
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .inspection {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+
+ .x {
+ height: 20rpx;
+ }
+
+ .inspection_list {
+ padding: 0 30rpx;
+ background: white;
+
+ .inspection_list_item {
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none;
+ }
+
+ span {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ .right1 {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 10rpx;
+ }
+
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #CCCCCC;
+ margin-right: 10rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ }
+
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+
+ .dw {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+
+ .active {
+ background: $nav-color !important;
+ color: #ffffff !important;
+ }
+
+ .right_item {
+ padding: 18rpx 32rpx;
+ background: #F2F2F2;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ }
+
+ .inspection_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: calc(100% - 60rpx);
+ padding: 30rpx 30rpx 68rpx 30rpx;
+ background: #F7F7F7;
+
+ .inspection_footer_sub {
+ width: 100%;
+ height: 88rpx;
+ background: #4275FC;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.0800);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: none;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/login/login.vue b/minipro_standard/pages/login/login.vue
index 6f10dc0..46d088a 100644
--- a/minipro_standard/pages/login/login.vue
+++ b/minipro_standard/pages/login/login.vue
@@ -7,36 +7,80 @@
</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.account"></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 { wxLogin, wxAccountLogin, getUserInfo, wxProgramLogin } from '@/util/api/index.js';
export default {
data() {
return {
- loginForm: {
+ from: {
+ openid: '',
+ unionid: '',
companyId: '',
- account: '',
+ 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: {
- loginAction() {
- uni.reLaunch({
- url: '/pages/workbench/workbench'
- })
+ async loginAction() {
+ 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) {
+ await this.$store.commit('SETSESSION', res.data)
+ let user = await getUserInfo({})
+ if (user.code === 200) {
+ await this.$store.commit('SETUSERINFO', user.data)
+ await this.$store.dispatch('getMenuList', 2)
+ uni.switchTab({
+ url: '/pages/workbench/workbench'
+ });
+ }
+ }
}
}
}
@@ -56,7 +100,6 @@
height: 100%;
}
.login-log {
- // margin-top: ;
margin: 356rpx auto 0 auto ;
left: 0;
right: 0;
@@ -75,7 +118,7 @@
}
}
.input-height {
- height: 100rpx;
+ height: 100rpx;
}
.com-input {
margin-top: -60px;
diff --git a/minipro_standard/pages/mine/mine.vue b/minipro_standard/pages/mine/mine.vue
index 18f9c4f..19d9808 100644
--- a/minipro_standard/pages/mine/mine.vue
+++ b/minipro_standard/pages/mine/mine.vue
@@ -2,11 +2,11 @@
<view>
<div class="box">
<div class="box_info" :style="{background: 'url(' + img + ')'}">
- <image src="@/static/2@2x.png" mode="widthFix" />
+ <image :src="userInfo.avatar ? userInfo.avatar : avatar" mode="widthFix" />
<div class="box_info_box">
- <text>寮犱笁</text>
- <div class="box_info_box_x" @click="show = true">
- <text>璞嗙背绉戞妧</text>
+ <text>{{userInfo.realname}}</text>
+ <div class="box_info_box_x" @click="switchOrganization">
+ <text>{{userInfo.curComDepartment ? userInfo.curComDepartment.name : ''}}</text>
<image src="@/static/mine_ic_change@2x.png" alt="" />
</div>
</div>
@@ -22,20 +22,26 @@
</div>
</div>
</div>
- <div class="box_out"><text>閫�鍑虹櫥褰�</text></div>
+ <div class="box_out" @click="loginOut"><text>閫�鍑虹櫥褰�</text></div>
</div>
<!-- 閮ㄩ棬閫夋嫨鍣� -->
- <u-picker :show="show" :columns="columns" @confirm="confirm"></u-picker>
+ <u-picker :show="show" :columns="columns" @confirm="onConfirm" @cancel="show = false"></u-picker>
<myTabbar :index="2" />
</view>
</template>
<script>
+ import { changeCom, getDepartmentListByConditon } from '@/util/api/PersonalAPI'
import myTabbar from "@/components/myTabber.vue"
+ import { wxLoginOut } from '@/util/api'
+ import { mapState } from 'vuex'
export default {
components: {
myTabbar
},
+ computed: mapState([
+ 'userInfo'
+ ]),
data() {
return {
MENU: [
@@ -47,22 +53,61 @@
{ name: '淇敼瀵嗙爜', url: '/pages/changePassword/changePassword', icon: require('@/static/mine_ic_xiugaimima@2x.png') },
],
img: require('@/static/mine_bg@2x.png'),
+ avatar: require('@/static/2@2x.png'),
show: false,
- columns: [
- ['涓浗', '缇庡浗', '鏃ユ湰']
- ]
+ columns: []
}
},
onLoad() {
uni.hideTabBar()
},
methods: {
- jump(url) {
- uni.navigateTo({ url })
+ // 閫�鍑虹櫥褰�
+ loginOut() {
+ wxLoginOut({
+ companyUserId: this.userInfo.companyUser.id
+ }).then(res => {
+ if (res.code === 200) {
+ this.$store.commit('clearCache')
+ uni.reLaunch({
+ url: '/pages/login/login'
+ });
+ }
+ })
},
- confirm(val) {
- console.log(val)
- this.show = false
+ // 纭鍒囨崲缁勭粐
+ onConfirm(e) {
+ changeCom(e.value[0].id).then(res => {
+ if (res.code === 200) {
+ this.show = false
+ uni.showToast({ title: '鏇存柊缁勭粐鎴愬姛', icon: 'success', duration: 2000 });
+ this.$store.dispatch('getUserInfos')
+ }
+ })
+ },
+ // 鑾峰彇缁勭粐
+ switchOrganization() {
+ getDepartmentListByConditon({
+ type: 0
+ }).then(res => {
+ if (res.code === 200) {
+ this.columns = []
+ let arr = []
+ res.data.forEach((item) => {
+ let obj = {
+ text: item.name, id: item.id
+ }
+ arr.push(obj)
+ })
+ this.columns.push(arr)
+ this.show = true
+ }
+ })
+ },
+ // 璺宠浆椤甸潰
+ jump(url) {
+ if (!url) return
+ uni.navigateTo({ url })
}
}
}
diff --git a/minipro_standard/pages/personal/personal.vue b/minipro_standard/pages/personal/personal.vue
index 22f5c25..3677e11 100644
--- a/minipro_standard/pages/personal/personal.vue
+++ b/minipro_standard/pages/personal/personal.vue
@@ -1,41 +1,45 @@
<template>
<view class="info">
<view class="info_portrait">
- <image src="@/static/2@2x.png" mode="widthFix" />
+ <image :src="userInfo.avatar ? userInfo.avatar : avatar" mode="widthFix" />
<text>鐢ㄦ埛鍚�</text>
</view>
<view class="info_list">
<view class="info_list_item">
<text>鏄电О</text>
- <text>鏆傛棤鏄电О</text>
+ <text>{{userInfo.realname ? userInfo.realname : '鏆傛棤鏄电О'}}</text>
</view>
<view class="info_list_item">
<text>鎵嬫満鍙�</text>
- <text>鏆傛棤鎵嬫満鍙�</text>
+ <text>{{userInfo.companyUser.phone ? userInfo.companyUser.phone : '鏆傛棤鎵嬫満鍙�'}}</text>
</view>
<view class="info_list_item">
<text>鎵�灞為儴闂�</text>
- <text>鏆傛棤鎵�灞為儴闂�</text>
+ <text>{{userInfo.department.name ? userInfo.department.name : '鏆傛棤鎵�灞為儴闂�'}}</text>
</view>
<view class="info_list_item">
<text>宀椾綅</text>
- <text>鏆傛棤宀椾綅</text>
+ <text>{{userInfo.companyUser.positionName ? userInfo.companyUser.positionName : '鏆傛棤宀椾綅'}}</text>
</view>
<view class="info_list_item">
<text>褰撳墠缁勭粐</text>
- <text>鏆傛棤缁勭粐</text>
+ <text>{{userInfo.rootDepartment.name ? userInfo.rootDepartment.name : '鏆傛棤缁勭粐'}}</text>
</view>
</view>
</view>
</template>
<script>
+ import { mapState } from 'vuex'
export default {
data() {
return {
-
+ avatar: require('@/static/2@2x.png'),
};
- }
+ },
+ computed: mapState([
+ 'userInfo'
+ ])
}
</script>
diff --git a/minipro_standard/pages/planDetails/planDetails.vue b/minipro_standard/pages/planDetails/planDetails.vue
new file mode 100644
index 0000000..9d3f17f
--- /dev/null
+++ b/minipro_standard/pages/planDetails/planDetails.vue
@@ -0,0 +1,546 @@
+<template>
+ <view class="details">
+ <view class="content_list">
+ <view class="content_list_item">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <text v-if="info.mmodel">{{info.mmodel.name}}</text>
+ <view class="content_list_item_top_left_tag" v-if="info.urgent">浼樺厛{{info.urgent}}</view>
+ <view class="content_list_item_top_left_type" v-if="info.type === 0">姝e父</view>
+ <view class="content_list_item_top_left_type dangerous" v-else-if="info.type === 1">寮傚父</view>
+ <view class="content_list_item_top_left_type warning" v-else-if="info.type === 2">杩斿伐</view>
+ </view>
+ <view class="content_list_item_top_right">
+ <text v-if="info.status === 0">宸茬敓鎴�</text>
+ <text v-if="info.status === 1">宸插彂甯�</text>
+ <text v-if="info.status === 2">宸叉挙鍥�</text>
+ <text v-if="info.status === 3">宸插彇娑�</text>
+ <text v-if="info.status === 4">宸插垎閰�</text>
+ <text v-if="info.status === 5">宸叉殏鍋�</text>
+ <text v-if="info.status === 6">宸插畬宸�</text>
+ <text v-if="info.status === 7">宸插叆搴�</text>
+ <text v-if="info.status === 8">宸插叧闂�</text>
+<!-- <text class="warning" v-if="info.status === 0">寰呭彂甯�</text>-->
+<!-- <text class="green" v-else-if="info.status === 1 || info.status === 4">鐢熶骇涓�</text>-->
+<!-- <text class="info" v-else-if="info.status === 6 || info.status === 7 || info.status === 3 || info.status === 8">宸插畬鎴�</text>-->
+ </view>
+ </view>
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">宸ュ簭鍚嶇О锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="info.pmodel">{{info.pmodel.name}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.num}}{{info.umodel.name}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">{{info.planDate}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鐢熶骇鎵规锛�</view>
+ <view class="content_list_item_content_item_nr">{{info.batch}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍙戝竷鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">{{info.createTime}}</view>
+ </view>
+ <view class="content_list_item_content_item" v-if="info.usermodel">
+ <view class="content_list_item_content_item_label">璁″垝浜哄憳锛�</view>
+ <view class="content_list_item_content_item_nr">{{info.usermodel.realname}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍒嗛厤鏁伴噺锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.distributNum}}{{info.umodel.name}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="info.umodel">{{info.doneNum}}{{info.umodel.name}}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <NotFound info="鏆傛湭鍒嗛厤宸ュ崟" v-if="info.workorderList && info.workorderList.length === 0" />
+ <template v-else>
+ <!-- <view class="details_list">
+ <view class="details_list_item" v-for="(item, i) in info.workorderList" :key="i" @click="jump(item)">
+ <view class="details_list_item_top">
+ <text>{{ item.createUserName }}</text>
+ <text>{{ item.code }}</text>
+ </view>
+ <view class="details_list_item_center">
+ <text>鑹搧鏁帮細{{ item.qualifiedNum }}</text>
+ <text>涓嶈壇鏁帮細<text class="red">{{ item.unqualifiedNum }}</text></text>
+ </view>
+ <view class="details_list_item_bottom">
+ <text>{{ item.createTime }}</text>
+ </view>
+ </view>
+ </view> -->
+ <view class="details_timeline" v-for="(item, i) in info.workorderList" :key="i">
+ <view class="details_timeline_header">
+ <view class="details_timeline_header_code">
+ <text>宸ュ崟缂栧彿锛歿{item.code}}</text>
+ <text>鐢熶骇浜哄憳锛歿{proUserStr(item)}}</text>
+ </view>
+ <text v-if="item.status === 0" class="yellow">宸插垱寤�</text>
+ <text v-if="item.status === 1" class="green">宸插鏂�</text>
+ <text v-if="item.status === 2">宸插畬宸�</text>
+ <text v-if="item.status === 3" class="purple">宸叉楠�</text>
+ <text v-if="item.status === 4">宸叉姤宸�</text>
+ <text v-if="item.status === 5">宸插叆搴�</text>
+ <text v-if="item.status === 6">宸插彇娑�</text>
+ <!-- <text v-if="item.status === 7">宸插彇娑�</text>-->
+ <!-- <text v-if="item.status === 8">宸插叧闂�</text>-->
+ </view>
+ <view class="details_timeline_item" v-if="item.produceDate">
+ <view class="activedian"></view>
+ <view class="dian active"></view>
+ <view class="x"></view>
+ <view class="details_timeline_item_zw"></view>
+ <view class="details_timeline_item_left">
+ <text class="active_font">浜у嚭</text>
+ <text>{{item.produceDate}}</text>
+ </view>
+ <view class="details_timeline_item_right">
+ <view class="item">
+ <view class="item_label">鐗╂枡锛�</view>
+ <view class="item_nr">
+ <view class="item_nr_item" v-if="item.qualifiedNum !== 0">
+ <text class="success">[鍚堟牸鍝乚</text>
+ <text>{{item.qualifiedNum}}{{info.umodel.name}}</text>
+ </view>
+ <view class="item_nr_item" v-if="item.unqualifiedNum !== 0">
+ <text class="warning">[涓嶈壇鍝乚</text>
+ <text>{{item.unqualifiedNum}}{{info.umodel.name}}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="details_timeline_item" v-if="item.materialDate">
+ <view class="activedian" v-if="!item.produceDate"></view>
+ <view class="dian" :class="{ 'active': !item.produceDate }"></view>
+ <view class="x" :style="{ height: item.materialList.length === 1 ? '2.1rem' : 1.2 * item.materialList.length + 'rem' }"></view>
+ <view class="details_timeline_item_zw"></view>
+ <view class="details_timeline_item_left">
+ <text :class="{'active_font': !item.produceDate}">鎶曟枡</text>
+ <text>{{item.materialDate}}</text>
+ </view>
+ <view class="details_timeline_item_right">
+ <view class="item">
+ <view class="item_label">鐗╂枡锛�</view>
+ <view class="item_nr" v-if="item.materialList && item.materialList.length !== 0">
+ <view class="item_nr_item" v-for="(items, idx) in item.materialList" :key="idx">
+ <text style="margin: 0;">{{items.name}} / {{items.num}}{{items.unitName}}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="details_timeline_item">
+ <view class="activedian" v-if="!item.materialDate && !item.produceDate"></view>
+ <view class="dian" :class="{ 'active': !item.materialDate && !item.produceDate }"></view>
+ <view class="details_timeline_item_zw"></view>
+ <view class="details_timeline_item_left">
+ <text :class="{'active_font': !item.materialDate && !item.produceDate}">鍒嗛厤</text>
+ <text>{{ item.distributeDate }}</text>
+ </view>
+ <view class="details_timeline_item_right">
+ <view class="item">
+ <view class="item_label">鍒嗛厤鏁伴噺锛�</view>
+ <view class="item_nr">{{item.planNum}}{{info.umodel.name}}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </template>
+ <!-- <view class="details_zw"></view> -->
+ <!-- <view class="details_btn" @click="toJump">鍘绘姤宸�</view> -->
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ info: {}
+ };
+ },
+ methods: {
+ // 鑾峰彇璇︽儏
+ queryByIDs() {
+ queryByID(this.$route.query.id)
+ .then(res => {
+ if (res.code === 200) {
+ this.info = res.data
+ }
+ })
+ },
+ proUserStr(item) {
+ if (!item.proUserList || item.proUserList.length<1) {
+ return '-'
+ }
+ return item.proUserList.map(user => { return user.proUserDepartName }).join('锛�')
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+.details {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+ .details_zw {
+ width: 100%;
+ height: 148rpx;
+ }
+ .details_btn {
+ position: fixed;
+ bottom: 60rpx;
+ left: 30rpx;
+ width: calc(100% - 60rpx);
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #305ED5;
+ 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: #FFFFFF;
+ }
+ .van-skeleton {
+ padding: 0 !important;
+ }
+ .content_list {
+ width: 100%;
+ padding: 30rpx;
+ background: #ffffff;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ .content_list_item {
+ display: flex;
+ flex-direction: column;
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+ max-width: 83%;
+ text {
+ max-width: 400rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+ .dangerous {
+ background: $nav-stateColor4 !important;
+ }
+ .warning {
+ background: $nav-stateColor5 !important;
+ }
+ .content_list_item_top_left_type {
+ flex-shrink: 0;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor2;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .content_list_item_top_left_tag {
+ flex-shrink: 0;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor4;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+ flex-shrink: 0;
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+ .content_list_item_content_item {
+ width: 50%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ &:nth-child(2) {
+ margin-top: 0 !important;
+ }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+ .details_list {
+ width: 100%;
+ height: auto;
+ background-color: #FFFFFF;
+ margin-top: 20rpx;
+ .details_list_item {
+ width: 100%;
+ padding: 24rpx 30rpx;
+ box-sizing: border-box;
+ background-color: #FFFFFF;
+ border-bottom: 2rpx solid #F7F7F7;
+ &:last-child {
+ border: none !important;
+ }
+ .details_list_item_top {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ text {
+ &:first-child {
+ font-size: 30rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ margin-right: 16rpx;
+ }
+ &:last-child {
+ font-size: 24rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+ }
+ .details_list_item_center {
+ width: 100%;
+ margin: 16rpx 0 20rpx 0;
+ .red {
+ color: #DE5243;
+ }
+ text {
+ &:first-child {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 100rpx;
+ }
+ &:last-child {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ .details_list_item_bottom {
+ text {
+ font-size: 24rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ .details_timeline {
+ padding: 30rpx;
+ background: #ffffff;
+ margin-top: 20rpx;
+ .details_timeline_header {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ .yellow {
+ color: $nav-stateColor1 !important;
+ }
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+ .purple {
+ color: $nav-color !important;
+ }
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ .details_timeline_header_code {
+ display: flex;
+ flex-direction: column;
+ text {
+ &:first-child {
+ font-size: 28rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ &:last-child {
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #777777;
+ margin-top: 24rpx;
+ }
+ }
+ }
+ }
+ .details_timeline_item {
+ display: flex;
+ align-items: flex-start;
+ position: relative;
+ margin-top: 60rpx;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ .x {
+ position: absolute;
+ top: 30rpx;
+ left: 29rpx;
+ width: 1rpx;
+ height: 165rpx;
+ border-right: 1rpx dashed #CCCCCC;
+ }
+ .dian {
+ position: absolute;
+ top: 22rpx;
+ left: 22rpx;
+ width: 16rpx;
+ height: 16rpx;
+ background: #CCCCCC;
+ border-radius: 50%;
+ }
+ .active {
+ width: 16rpx;
+ height: 16rpx;
+ background: $nav-color;
+ z-index: 8;
+ }
+ .activedian {
+ position: absolute;
+ top: 14rpx;
+ left: 14rpx;
+ width: 32rpx;
+ height: 32rpx;
+ background: #E4EBFE;
+ border-radius: 50%;
+ }
+ .details_timeline_item_zw {
+ width: 100rpx;
+ }
+ .details_timeline_item_left {
+ display: flex;
+ flex-direction: column;
+ width: 150rpx;
+ .active_font {
+ color: $nav-color !important;
+ }
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ &:nth-child(2) {
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-top: 16rpx;
+ }
+ }
+ }
+ .details_timeline_item_right {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ margin-left: 30rpx;
+ .item {
+ display: flex;
+ align-items: flex-start;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ .item_label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .item_nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ .item_nr_item {
+ display: flex;
+ align-items: center;
+ margin-bottom: 24rpx;
+ .success {
+ color: $nav-stateColor2;
+ }
+ .warning {
+ color: $nav-stateColor5;
+ }
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ &:last-child {
+ color: #333333;
+ margin-left: 12rpx;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/minipro_standard/pages/plannedDistribution/plannedDistribution.vue b/minipro_standard/pages/plannedDistribution/plannedDistribution.vue
new file mode 100644
index 0000000..de67bb9
--- /dev/null
+++ b/minipro_standard/pages/plannedDistribution/plannedDistribution.vue
@@ -0,0 +1,609 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜"></Search>
+ <view class="content_search_x"></view>
+ <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="fp_list_item" v-for="(item, i) in lists" :key="item.id" @click="clickItem(i)">
+ <view class="fp_list_item_header">
+ <u-checkbox :checked="item.isActive"></u-checkbox>
+ <text v-if="item.mmodel">{{item.mmodel.name}}</text>
+ <view class="tags" v-if="item.urgent">浼樺厛{{item.urgent}}</view>
+ <view class="warning" v-if="item.type === 2">杩斿伐</view>
+ <view class="warning success" v-else-if="item.type === 0">姝e父</view>
+ <view class="warning fail" v-else-if="item.type === 1">寮傚父</view>
+ </view>
+ <view class="fp_list_item_nr">
+ <view class="item" v-if="item.pmodel">
+ <view class="item_label">宸ュ簭鍚嶇О锛�</view>
+ <view class="item_nr">{{item.pmodel.name}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">璁″垝鏃ユ湡锛�</view>
+ <view class="item_nr">{{item.planDate}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">璁″垝鏁伴噺锛�</view>
+ <view class="item_nr">{{item.num}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">鐢熶骇鎵规锛�</view>
+ <view class="item_nr">{{item.batch}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">搴撳瓨锛�</view>
+ <view class="item_nr">{{item.isStock === 0 ? '涓嶆弧瓒�' : '婊¤冻'}}</view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <view class="fp_zw"></view>
+ <view class="fp_footer">
+ <view class="fp_footer_button" @click="submit">鍒嗛厤(1)</view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import LabelSelection from '@/components/LabelSelection.vue'
+ export default {
+ components: { Search, LabelSelection },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ startDate: '',
+ endDate: '',
+ procedureIds: [],
+ departIds: '',
+ mixParam: '',
+ cateIds: []
+ },
+ tagList: [
+ {
+ id: '',
+ name: '娉ㄥ皠',
+ num: '0'
+ },
+ {
+ id: '0',
+ name: '鐑х粨',
+ num: '0'
+ },
+ {
+ id: '1,4',
+ name: '鐒婃帴',
+ num: '0'
+ }
+ ],
+ data: [], // 宸ュ簭鏁版嵁
+ factoryList: [],
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: [
+ {
+ id: 1,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ isActive: false,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 2,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ isActive: false,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 3,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ isActive: false,
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 4,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ isActive: false,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 5,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ isActive: false,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ }
+ ]
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ // 鐐瑰嚮褰撳墠椤�
+ clickItem(i) {
+ this.lists.forEach((item, index) => {
+ item.isActive = i === index;
+ })
+ },
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => { item.isActive = false })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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 data;
+ this.lists.forEach(item => {
+ if (item.isActive) {
+ data = item
+ }
+ })
+ if (!data) {
+ uni.showToast({ title: '鑷冲皯閫夋嫨涓�椤硅鍒掞紒', duration: 2000 });
+ return
+ }
+ uni.navigateTo({
+ url: `/pages/allocation/allocation?gxid=${data.procedureId}&jhid=${data.id}&num=${data.workorderDistributNum ? data.num - data.workorderDistributNum : data.num}`
+ })
+ },
+ // 鑾峰彇璁″垝鍒楄〃鏁版嵁
+ getLists() {
+ console.log('getLists')
+ if (!this.finished) {
+ this.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [
+ {
+ direction: 'ASC',
+ property: 'publishDate'
+ }
+ ]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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;
+ .fp_list_item {
+ background: white;
+ display: flex;
+ flex-direction: column;
+ padding: 30rpx;
+ border-bottom: 1rpx solid #ececec;
+ .fp_list_item_header {
+ display: flex;
+ align-items: center;
+ text {
+ max-width: 64%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ margin-left: 14rpx;
+ }
+ .tags {
+ flex-shrink: 0;
+ margin-left: 16rpx;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor4;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ }
+ .fail {
+ background: $nav-stateColor4 !important;
+ }
+ .success {
+ background: $nav-stateColor2 !important;
+ }
+ .warning {
+ flex-shrink: 0;
+ margin-left: 16rpx;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor5;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ }
+ }
+ .fp_list_item_nr {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ margin-top: 32rpx;
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ .item {
+ display: flex;
+ align-items: flex-start;
+ width: 50%;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0!important;
+ }
+ &:nth-child(2) {
+ margin-top: 0!important;
+ }
+ .item_label {
+ width: 130rpx;
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ text-align: right;
+ }
+ .item_nr {
+ 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;
+ }
+ .fp_zw {
+ height: 150px;
+ }
+ .fp_footer {
+ width: 100%;
+ padding-bottom: env(safe-area-inset-bottom);
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ background: #ffffff;
+ .fp_footer_button {
+ width: 272rpx;
+ height: 98rpx;
+ background: $nav-color;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ float: right;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/plannedProgress/plannedProgress.vue b/minipro_standard/pages/plannedProgress/plannedProgress.vue
new file mode 100644
index 0000000..a36f4a1
--- /dev/null
+++ b/minipro_standard/pages/plannedProgress/plannedProgress.vue
@@ -0,0 +1,632 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜/宸ュ簭鍚嶇О">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">璁″垝鏃ユ湡</view>
+ <view class="Search_item_content" @click="openDate">
+ <view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">{{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+ <text>-</text>
+ <view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">{{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">鐢熶骇宸ュ巶</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in factoryList" :key="item.id" @click="changeTags(i, item.id)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">宸ュ簭</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in data" :key="item.id" @click="changeTag(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ </template>
+ </Search>
+ <view class="content_search_x"></view>
+ <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="item in lists" :key="item.id" @click="jump(item)">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <text v-if="item.mmodel">{{item.mmodel.name}}</text>
+ <view class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</view>
+ <view class="content_list_item_top_left_tag warning" v-if="item.paused === 1">鍋�</view>
+ </view>
+ <view class="content_list_item_top_right">
+ <text v-if="item.status === 0">宸茬敓鎴�</text>
+ <text v-if="item.status === 1">宸插彂甯�</text>
+ <text v-if="item.status === 2">宸叉挙鍥�</text>
+ <text v-if="item.status === 3">宸插彇娑�</text>
+ <text v-if="item.status === 4">宸插垎閰�</text>
+ <text v-if="item.status === 5">宸叉殏鍋�</text>
+ <text v-if="item.status === 6">宸插畬宸�</text>
+ <text v-if="item.status === 7">宸插叆搴�</text>
+ <text v-if="item.status === 8">宸插叧闂�</text>
+<!-- <text class="warning" v-if="item.status === 0">寰呭彂甯�</text>-->
+<!-- <text class="green" v-else-if="item.status === 1 || item.status === 4">鐢熶骇涓�</text>-->
+<!-- <text class="info" v-else-if="item.status === 6 || item.status === 7 || item.status === 3 || item.status === 8">宸插畬鎴�</text>-->
+ </view>
+ </view>
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item" v-if="item.pmodel">
+ <view class="content_list_item_content_item_label">宸ュ簭鍚嶇О锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.pmodel.name}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.planDate}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="item.umodel">{{item.num}}{{item.umodel.name}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鐢熶骇鎵规锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.batch}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍙戝竷鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.publishDate ? item.publishDate : '-'}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝浜哄憳锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.usermodel.realname}}</view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鐢熶骇宸ュ巶锛�</view>
+ <view class="content_list_item_content_item_nr">{{item.fmodel.name}}</view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" mode="range" @confirm="timeConfirm"></u-calendar>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import LabelSelection from '@/components/LabelSelection.vue'
+ export default {
+ components: { Search, LabelSelection },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ startDate: '',
+ endDate: '',
+ procedureIds: [],
+ departIds: '',
+ mixParam: '',
+ cateIds: []
+ },
+ tagList: [
+ {
+ id: '',
+ name: '鍏ㄩ儴',
+ num: '0'
+ },
+ {
+ id: '0',
+ name: '寰呭彂甯�',
+ num: '0'
+ },
+ {
+ id: '1,4',
+ name: '鐢熶骇涓�',
+ num: '0'
+ },
+ {
+ id: '6, 7, 3, 8',
+ name: '宸插畬鎴�',
+ num: '0'
+ }
+ ],
+ data: [], // 宸ュ簭鏁版嵁
+ factoryList: [],
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: [
+ {
+ id: 1,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 2,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 3,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 4,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 5,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ }
+ ]
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => { item.isActive = false })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [
+ {
+ direction: 'ASC',
+ property: 'publishDate'
+ }
+ ]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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%;
+ background: white;
+ padding: 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+ width: 80%;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .warning {
+ background: $nav-stateColor5 !important;
+ }
+ .content_list_item_top_left_tag {
+ flex-shrink: 0;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor4;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+ flex-shrink: 0;
+ margin-left: 10rpx;
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+ .content_list_item_content_item {
+ width: 50%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ &:nth-child(2) {
+ margin-top: 0 !important;
+ }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+ .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>
diff --git a/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
new file mode 100644
index 0000000..e6800a4
--- /dev/null
+++ b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
@@ -0,0 +1,494 @@
+<template>
+ <view class="content">
+ <div :class="{ 'content_top': status }" class="content_search">
+ <v-Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+ placeholder="鎼滅储宸ュ崟缂栫爜/宸ュ簭鍚嶇О">
+ <template v-slot:content>
+ <div class="Search_item">
+ <div class="Search_item_label">璁″垝鏃ユ湡</div>
+ <div class="Search_item_content" @click="isOpenDate=true">
+ <div class="Search_item_content_a" :style="form.startDate ? 'color: #000;' : ''">
+ {{ form.startDate ? form.startDate : '寮�濮嬫棩鏈�'}}</div>
+ <span>-</span>
+ <div class="Search_item_content_a" :style="form.endDate ? 'color: #000;' : ''">
+ {{ form.endDate ? form.endDate : '缁撴潫鏃ユ湡'}}</div>
+ </div>
+ </div>
+ </template>
+ </v-Search>
+ <div class="content_search_x"></div>
+ <v-LableSelection :TagList="tagList" :isShow="true" @change="clickTag"></v-LableSelection>
+ </div>
+ <div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
+ <div class="content_list">
+ <u-list @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper">
+ <u-list-item v-for="(item, i) in list" :key="i">
+ <div class="content_list_item" @click="jump(item)">
+ <div class="content_list_item_top">
+ <div class="content_list_item_top_left">
+ <span v-if="item.mmodel">{{item.mmodel.name}} | {{item.procedureName}}</span>
+ <div class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</div>
+ <div class="content_list_item_top_left_tagW" v-if="item.paused === 1">鍋�</div>
+ </div>
+ <div class="content_list_item_top_right">
+ <span class="yellow" v-if="item.status === 0">宸插垱寤�</span>
+ <span class="green" v-if="item.status === 1">宸插鏂�</span>
+ <span v-if="item.status === 2">宸插畬宸�</span>
+ <span class="purple" v-if="item.status === 3">宸叉楠�</span>
+ <span v-if="item.status === 4">宸叉姤宸�</span>
+ <span v-if="item.status === 5">宸插叆搴�</span>
+ <span v-if="item.status === 6">宸插彇娑�</span>
+ </div>
+ </div>
+ <span>宸ュ崟缂栫爜: {{item.code}}</span>
+ <div class="content_list_item_content">
+ <div class="content_list_item_content_item">
+ <div class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</div>
+ <div class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}
+ </div>
+ </div>
+ <div class="content_list_item_content_item">
+ <div class="content_list_item_content_item_label">璁″垝寮�宸ワ細</div>
+ <div class="content_list_item_content_item_nr">{{item.planDate}}</div>
+ </div>
+ <div class="content_list_item_content_item">
+ <div class="content_list_item_content_item_label">鐢熶骇鎵规锛�</div>
+ <div class="content_list_item_content_item_nr">{{item.batch}}</div>
+ </div>
+ <div class="content_list_item_content_item">
+ <div class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</div>
+ <div class="content_list_item_content_item_nr" v-if="item.umodel">
+ {{item.planNum}}{{item.umodel.name}}</div>
+ </div>
+ <div class="content_list_item_content_item">
+ <div class="content_list_item_content_item_label">鐢熶骇璁惧锛�</div>
+ <div class="content_list_item_content_item_nr" v-if="item.pgmodel">{{item.pgmodel.name}}
+ </div>
+ </div>
+ <div class="content_list_item_content_item" v-if="item.status === 5">
+ <div class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</div>
+ <div class="content_list_item_content_item_nr">{{item.proNum}}</div>
+ </div>
+ </div>
+ </div>
+ </u-list-item>
+ </u-list>
+ </div>
+ <!-- <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+ <van-list v-model:loading="loading" :finished="finished" finished-text="娌℃湁鏇村浜唦" @load="onLoad">
+ </van-list>
+ </van-pull-refresh> -->
+ <u-calendar :show="isOpenDate" mode="range" @close="isOpenDate=false" @confirm="onConfirm"></u-calendar>
+ <!-- <van-calendar v-model:show="isOpenDate" type="range" :min-date="minDate" :max-date="maxDate" color="#4275FC"
+ @confirm="onConfirm" /> -->
+ <!-- <v-ScanCode
+ :openCode="openCode"
+ :infos="['绗竴娆℃壂鐮�']"
+ @closePopup="closePopup"
+ @onDecode="onDecode">
+ </v-ScanCode> -->
+ </view>
+</template>
+
+<script>
+ import vSearch from '@/components/Search.vue'
+ import vLableSelection from '@/components/LabelSelection.vue'
+ import { gsdate } from '@/util/utils'
+ export default {
+ components: {
+ vSearch,
+ vLableSelection
+ },
+ data() {
+ return {
+ status: true,
+ isOpenDate: false,
+ // tagList: [1,2,3],
+ form: {
+ startDate: '',
+ endDate: ''
+ },
+ list: [
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 0,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 1,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 2,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { name: '鐗╂枡001', code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 3,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 4,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 5,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 6,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ {
+ mmodel: { name: 'adsa', },
+ mmodel: { code: 'wl-001' },
+ umodel: { name: '鍚�' },
+ pgmodel: { name: '娑插帇鏈�' },
+ procedureName: '鍘嬪埗',
+ urgent: 10,
+ paused: 0,
+ status: 7,
+ code: '00100',
+ planDate: '2023-08-30',
+ batch: 'kk-yw',
+ planNum: 300,
+ proNum: 100,
+ },
+ ],
+ page: {
+ size: 10,
+ index: 1,
+ total: 0
+ }
+ };
+ },
+ methods: {
+ reset() {},
+ submit() {},
+ onConfirm(value) {
+ const [start, end] = value
+ this.form.startDate = gsdate(start)
+ this.form.endDate = gsdate(end)
+ this.isOpenDate = false
+ },
+ scrolltolower() {},
+ scrolltoupper() {},
+ jump(item) {
+ uni.$emit('workOrder', item)
+ uni.navigateBack()
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content {
+ .content_code {
+ position: fixed;
+ right: 30rpx;
+ bottom: 100rpx;
+
+ img {
+ width: 138rpx;
+ height: 138rpx;
+ }
+ }
+
+ .content_top {
+ top: 0 !important;
+ }
+
+ .content_search {
+ padding: 30rpx;
+ background: white;
+ position: sticky;
+ top: 88rpx;
+ z-index: 9;
+
+ .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 {
+ width: 156rpx;
+ height: 70rpx;
+ 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;
+
+ &:nth-child(4n) {
+ margin-right: 0;
+ }
+ }
+ }
+
+ span {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+
+ .Search_item_content_a {
+ width: 308rpx;
+ height: 70rpx;
+ 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_total {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+
+ .content_list {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+
+ .content_list_item {
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ background: white;
+
+ span {
+ color: #5a5a5a;
+ margin-top: 15rpx;
+ }
+
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+ width: 80%;
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ }
+
+ .content_list_item_top_left_tagW {
+ margin-top: 14rpx;
+ flex-shrink: 0;
+ box-sizing: border-box;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor5;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .content_list_item_top_left_tag {
+ margin-top: 14rpx;
+ flex-shrink: 0;
+ padding: 5rpx 10rpx;
+ background: $nav-stateColor4;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+
+ .purple {
+ color: $nav-color !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .yellow {
+ color: $nav-stateColor1 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item {
+ width: 50%;
+ display: flex;
+ margin-top: 24rpx;
+
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+
+ &:nth-child(2) {
+ margin-top: 0 !important;
+ }
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages/updatePhone/updatePhone.vue b/minipro_standard/pages/updatePhone/updatePhone.vue
index b70fb79..46dd2ba 100644
--- a/minipro_standard/pages/updatePhone/updatePhone.vue
+++ b/minipro_standard/pages/updatePhone/updatePhone.vue
@@ -8,7 +8,7 @@
<view class="password_list_item">
<text>褰撳墠缁戝畾</text>
<view class="password_list_item_box">
- <input type="number" disabled v-model="form.currentPhone" maxlength="11">
+ <input type="number" disabled v-model="userInfo.companyUser.phone" maxlength="11">
</view>
</view>
<view class="password_list_item">
@@ -22,7 +22,7 @@
<view class="password_list_item_box">
<input type="text" v-model="form.verificationCode" maxlength="4" placeholder="璇疯緭鍏ユ墜鏈洪獙璇佺爜">
<p @click="getVerificationCode" v-if="!code.isOpen">鑾峰彇楠岃瘉鐮�</p>
- <p @click="getVerificationCode" v-else>{{code.num}}</p>
+ <p v-else>{{code.num}}</p>
</view>
</view>
</view>
@@ -35,15 +35,50 @@
</template>
<script>
+ import { mapState } from 'vuex'
+ import { phoneRegular } from '@/common/config.js'
export default {
data() {
return {
form: {
- currentPhone: '',
newPhone: '',
verificationCode: ''
+ },
+ code: {
+ num: 60,
+ isOpen: false,
+ timer: 0
}
};
+ },
+ computed: mapState([
+ 'userInfo'
+ ]),
+ methods: {
+ // 鑾峰彇楠岃瘉鐮�
+ getVerificationCode() {
+ this.code.isOpen = true
+ this.code.timer = setInterval(() => {
+ if (this.code.num === 0) {
+ clearInterval(this.code.timer)
+ this.code.isOpen = false
+ this.code.num = 60
+ }
+ this.code.num = this.code.num - 1
+ }, 1000)
+ },
+ // 鎻愪氦淇敼
+ submit() {
+ if (!this.form.newPhone) {
+ uni.showToast({ title: '鏂版墜鏈哄彿涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ } else if (!phoneRegular.test(this.form.newPhone)) {
+ uni.showToast({ title: '鎵嬫満鍙蜂笉鍚堟硶', icon: 'none', duration: 2000 });
+ } else if (!this.form.verificationCode) {
+ uni.showToast({ title: '楠岃瘉鐮佷笉鑳戒负绌�', icon: 'none', duration: 2000 });
+ } else {
+ console.log('鍙互鎻愪氦')
+ }
+ }
}
}
</script>
diff --git a/minipro_standard/pages/workbench/workbench.vue b/minipro_standard/pages/workbench/workbench.vue
index 01a623e..fa678a3 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>
@@ -21,12 +21,19 @@
</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/Material.vue b/minipro_standard/pages_adjust/components/Material.vue
new file mode 100644
index 0000000..0685993
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/Material.vue
@@ -0,0 +1,131 @@
+<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>
+ <view class="content_list">
+ <u-list @scrolltolower="scrolltolower">
+ <u-list-item v-for="(item, index) in indexList" :key="index">
+ <div class="content_list_item" @click="getVal(item)">
+ <div class="content_list_item_name">
+ <span>{{item.name}}</span>
+ </div>
+ </div>
+ </u-list-item>
+ </u-list>
+ </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/components/ProductionProcess.vue b/minipro_standard/pages_adjust/components/ProductionProcess.vue
new file mode 100644
index 0000000..297839e
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/ProductionProcess.vue
@@ -0,0 +1,111 @@
+<template>
+ <u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+ <view class="title">
+ <text>閫夋嫨宸ュ簭</text>
+ </view>
+ <view class="content">
+ <scroll-view scroll-y class="content_list">
+ <div class="content_list_item" v-for="(item, index) in list" :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: {
+ type: Boolean,
+ required: true
+ },
+ list: {
+ type: Array,
+ required: true
+ }
+ },
+ methods: {
+ getVal(item) {
+ this.$emit('value', item)
+ },
+ open() {
+ this.indexList = []
+ },
+ 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/components/Warehouse.vue b/minipro_standard/pages_adjust/components/Warehouse.vue
new file mode 100644
index 0000000..9911c53
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/Warehouse.vue
@@ -0,0 +1,136 @@
+<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>
+ <view class="content_list">
+ <u-list @scrolltolower="scrolltolower">
+ <u-list-item v-for="(item, index) in indexList" :key="index">
+ <div class="content_list_item" @click="getVal(item)">
+ <div class="content_list_item_name">
+ <span style="color: #03AF76;">[DTFHNE]</span>
+ <!-- <span style="color: #03AF76;" v-if="item.tmodel.label == 'APPLIANCE_ONTEST'">[{{ item.tmodel.code }}]</span>
+ <span style="color: #305ED5;" v-if="item.tmodel.label == 'APPLIANCE_MIX'">[{{ item.tmodel.code }}]</span>
+ <span style="color: #F5A400;" v-if="item.tmodel.label == 'APPLIANCE_OFFTEST'">[{{ item.tmodel.code }}]</span> -->
+ <!-- <span style="color: red;" v-if="item.tmodel.label == 'APPLIANCE_USELESS'">[{{ item.tmodel.code }}]</span> -->
+ <span>{{item.name}}</span>
+ </div>
+ </div>
+ </u-list-item>
+ </u-list>
+ </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/components/location.vue b/minipro_standard/pages_adjust/components/location.vue
new file mode 100644
index 0000000..abc7135
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/location.vue
@@ -0,0 +1,101 @@
+<template>
+ <u-popup :show="show" mode="bottom" :closeable="true" :round="10" @close="close">
+ <view class="title">
+ <text>閫夋嫨璐т綅</text>
+ </view>
+ <view class="content">
+ <view class="content_list">
+ <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
+ <div class="content_list_item_name">{{item.unionName}}</div>
+ </div>
+ </view>
+ </view>
+ </u-popup>
+</template>
+
+<script>
+ export default {
+ props: {
+ show: {
+ type: Boolean,
+ required: true
+ },
+ list: {
+ type: Array,
+ required: true
+ }
+ },
+ methods: {
+ close() {
+ this.$emit('close')
+ },
+ jump(item) {
+ this.$emit('value', item)
+ }
+ }
+ }
+</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 {
+ 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/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/InventoryQuery/InventoryQuery.vue b/minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue
new file mode 100644
index 0000000..83ffa40
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/InventoryQuery/InventoryQuery.vue
@@ -0,0 +1,485 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+ placeholder="鎼滅储浠撳簱鍚嶇О/鐗╂枡鍚嶇О">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">姹囨�讳緷鎹�</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view
+ class="tag_item"
+ :class="{ tag_active: item.isActive }"
+ v-for="(item, i) in groupTypes"
+ :key="item.id"
+ @click="changeGroup(i)"
+ >
+ {{ item.name }}
+ </view>
+ </view>
+ </view>
+ </view>
+ </template>
+ </Search>
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{controlData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="(item, i) in list" :key="i">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <text>{{ item.materialName }} | {{ item.materialCode }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <text class="created">{{ '搴撳瓨锛�' + item.num + item.unitName }}</text>
+ </view>
+ </view>
+ <view class="content_list_item_sx">
+ <text v-if="item.qualityType == 0" class="green">鍚堟牸 | </text>
+ <text v-if="item.qualityType == 1" class="yellow">涓嶈壇 | </text>
+ <text v-if="item.qualityType == 2" class="red">鎶ュ簾 | </text>
+ <text>{{ item.procedureName ? item.procedureName : '-' }} | </text>
+ <text>{{ item.batch ? item.batch : '-' }}</text>
+ </view>
+ <!-- item涓婚淇℃伅閮ㄥ垎 -->
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">瑙勬牸锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.attr }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
+ <view class="content_list_item_content_item_label">浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.wareHouseName ? item.wareHouseName : '-' }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
+ <view class="content_list_item_content_item_label">璐т綅锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.locationName }}
+ </view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import { orderTyepToStr } from '@/util/constData.js'
+ export default {
+ components: {
+ Search
+ },
+ data() {
+ return {
+ height: '',
+ top: '',
+ controlData: {
+ finished: false,
+ loading: false,
+ total: 0,
+ page: 0,
+ capacity: 10,
+ },
+ groupTypes: [
+ { name: '榛樿', id: '3', isActive: true },
+ { name: '鐗╂枡', id: '1', isActive: false },
+ { name: '鐗╂枡+浠撳簱', id: '2', isActive: false }
+ ],
+ data: {
+ materialName: '',
+ groupType: '3'
+ },
+ list: []
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ changeGroup(i) {
+ this.groupTypes[i].isActive = !this.groupTypes[i].isActive;
+ this.data.groupType = this.groupTypes[i].id
+ for (const index in this.groupTypes) {
+ if (index != i) {
+ // console.log(index, i)
+ const item = this.groupTypes[index]
+ item.isActive = false
+ }
+ }
+ },
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.orderType) {
+ if (item.id == type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => {
+ item.isActive = false
+ })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [{
+ direction: 'ASC',
+ property: 'publishDate'
+ }]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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 {
+ background: #ffffff;
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ .content_list_item_sx {
+ margin-top: 20rpx;
+ }
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .content_list_item_top_left {
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0 !important;
+ }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .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/OrderDetail/OrderDetail.vue b/minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
new file mode 100644
index 0000000..930fb69
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
@@ -0,0 +1,1002 @@
+<template>
+ <view>
+ <workOrderInfo :orederMessage="{proUserList:[]}" />
+ <view class="bg_cate">
+ <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+ v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
+ </view>
+ <div class="bg_list" v-if="typeView === 0">
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>鎶曟枡鏄庣粏</span>
+ </div>
+ <div class="bg_list_item_top_right" @click="jumpTL">
+ <!-- v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)" -->
+ <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> -->
+ <!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
+ <image src="../../static/gongdan_ic_shoudong@2x.png" class="img28" mode=""></image>
+ <span class="cm">鏂板鎶曟枡</span>
+ </div>
+ </div>
+
+ <template v-if="feedingData && feedingData.length > 0">
+ <u-swipe-action>
+ <u-swipe-action-item v-for="(item, index) in feedingData" :key="index" :options="options"
+ @click="deleItem(item.id, 'T')">
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <!-- <span>{{item.code}}</span> -->
+ <div class="bg_list_item_num_item_wl">
+ <span> {{ item.materialName || '澧欎綋鐮�' }}{{ item.procedureName ? ` | ${item.procedureName}` : ''
+ }}</span>
+ <div class="bg_list_item_num_item_wl_lx">
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span>
+ <span class="orange" v-if="item.qualityType == 1">涓嶈壇 / </span>
+ <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span>
+ <span>{{ item.locationName }}</span>
+ <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span>
+ </div>
+ </div>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderinput:update')" -->
+ <!-- <view class="cY">
+ <span>{{item.num}}{{ item.unitName }}</span>
+ <image src="../../../static/ic_edit@2x.png" class="img48" mode=""></image>
+ <span class="red">鍒犻櫎</span>
+ </view> -->
+ <view class="cY">
+ <input v-model="item.num"
+ @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)"
+ type="number" />
+ <span class="cm">淇濆瓨</span>
+ </view>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </u-swipe-action-item>
+ </u-swipe-action>
+
+ </template>
+ <template v-else>
+ <div class="kong">
+ <span>鏆傛棤鏁版嵁</span>
+ </div>
+ </template>
+ </div>
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>浜у嚭鏄庣粏</span>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>鑹搧鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.qualified"
+ @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)"
+ placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <div class="bg_list_item_num_item">
+ <span>涓嶈壇鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.undesirable"
+ @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)"
+ placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_h" v-if="produceFrom.undesirable > 0">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item" @click="badShow = true">
+ <span>涓嶈壇椤�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="wulll" :style="{ color: form.defectiveName ? '#305ED5' : '' }">{{ form.defectiveName ?
+ form.defectiveName : '璁剧疆' }}</span>
+ <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_plan" @click="TimeShow = true">
+ <div class="bg_plan_label">
+ <span>鎶ュ伐鏃堕暱</span>
+ </div>
+ <div class="bg_plan_label_val">
+ <span
+ :style="{ color: form.durationName ? '#333' : '' }">{{ form.durationName ? form.durationName : '璇烽�夋嫨' }}</span>
+ <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+ </div>
+ </div>
+ <div class="bg_list_item" v-if="arrType && arrType.length > 0">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>宸ヨ祫缁╂晥</span>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>璁′欢鏂瑰紡</span>
+ <div class="bg_list_item_num_item_list">
+ <div :class="form.index == index ? '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(item, index)">
+ {{ item.name }}
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>宸ヨ祫鍗曚环</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ (arrType[form.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[form.index].type ==
+ 0 ? '浠�' : '鏃�' }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>棰勮宸ヨ祫</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ expectedSalary }}鍏�</span>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>杈炬爣鐜�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ complianceRate }}%</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div class="details_dj" v-if="typeView === 1">
+
+ <div class="details_dj_list">
+ <u-swipe-action>
+ <u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
+ @click="dele(item.id)">
+ <div class="details_dj_list_item">
+ <span>{{ item.attrName }}锛歿{ item.val }}</span>
+ <span>{{ item.userName }} {{ item.createTime }}</span>
+ </div>
+ </u-swipe-action-item>
+ </u-swipe-action>
+ </div>
+ </div>
+ <!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
+ <template>
+ <div class="bh_zw"></div>
+ <div class="bg_footer bg_f7">
+ <div class="bg_footer_submit bg_m" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+ <!-- proxy.$auth('h5:workorder:processRecord') && -->
+ <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+ <image src="../../../static/gongdan_ic_shoudong@2x.png" class="fornt-img" mode=""></image>
+ <span>鏂板鐐规</span>
+ </div>
+ </div>
+ </template>
+ <u-datetime-picker :show="TimeShow" @cancel="TimeShow=false" @confirm="timeConfirm" v-model="form.time"
+ mode="time"></u-datetime-picker>
+ <u-popup :show="badShow" @close="badShow=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="confirm">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import workOrderInfo from '@/components/workOrderInfo.vue'
+ export default {
+ components: {
+ workOrderInfo
+ },
+ data() {
+ return {
+ cate: [{
+ name: '鐢熶骇'
+ },
+ {
+ name: '鐐规'
+ }
+ ],
+ form: {
+ time: '',
+ efective: [],
+ defectiveName: '',
+ durationName: '0灏忔椂0鍒嗛挓',
+ duration: 0,
+ type: 0,
+ index: 0
+ },
+ TimeShow: false,
+ badShow: false,
+ typeView: 0,
+ feedingData: [{
+ id: 0,
+ materialName: '澧欎綋鐮�',
+ procedureName: '鍘嬪埗',
+ qualityType: 1,
+ locationName: 'CP-01',
+ batch: '20230713',
+ num: 2,
+ maxNum: 10,
+ unitAttribute: 1,
+ unitName: '鍧�'
+ }],
+ options: [{
+ text: '鍒犻櫎',
+ style: {
+ backgroundColor: 'red',
+ }
+ }],
+ arrType: [{
+ name: '璁℃椂',
+ type: 1,
+ salary: 1000,
+ },
+ {
+ name: '璁′欢',
+ type: 0,
+ salary: 100
+ },
+ ],
+ // 浜у嚭鍚堟牸/涓嶈壇
+ produceFrom: {
+ qualifiedId: '',
+ qualified: '', // 鍚堟牸
+ undesirableId: '',
+ undesirable: 5 // 涓嶈壇
+ },
+ djData: [{
+ attrName: '鍑烘按鏃堕棿',
+ val: '2022-05-28 16:3',
+ userName: '寮犱笁 ',
+ createTime: '2022-05-28 16:32:'
+ }],
+ cateList: [{
+ active: false,
+ name: '姣涘埡',
+ num: 0
+ }]
+ };
+ },
+ computed: {
+ expectedSalary() {
+ if (this.arrType.length === 0) return 0;
+ // 鎸変欢璁$畻
+ if (this.arrType[this.form.index].type == 0) {
+ if (!this.produceFrom.qualified) return 0
+ if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
+ return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
+ } else {
+ return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
+ 2) || 0
+ }
+ } else {
+ if (!this.form.duration) return 0;
+ let h = (this.form.duration / 60 / 60).toFixed(2)
+ return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
+ }
+ },
+ complianceRate() {
+ if (this.arrType.length === 0) return 0;
+ if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
+ if (!this.form.duration) return 0;
+ if (!this.arrType[this.form.index].num) return 0;
+ // 鎸変欢璁$畻
+ // if (infoBox.value.type == 0) {
+ if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
+ .duration / 3600)).toFixed(2)
+ let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+ // return total * infoBox.value.salary;
+ } else {
+ let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
+ let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // return Number(from.qualified) * infoBox.value.salary;
+ }
+ }
+ },
+ methods: {
+ click() {
+
+ },
+ clickIten(index) {
+ this.typeView = index
+ },
+ timeConfirm({
+ value
+ }) {
+ console.log(value)
+ let h = Number(value.substring(0, 2))
+ let m = Number(value.substring(3, 5))
+ let s = 0
+ if (h > 0) {
+ s += h * 60 * 60
+ }
+ if (m > 0) {
+ s += m * 60
+ }
+ this.form.duration = s
+ this.form.durationName = `${h}灏忔椂${m}鍒嗛挓`
+ this.TimeShow = false
+ },
+ // 缂栬緫鎶曟枡/浜у嚭
+ change(id, num, type, maxNum, item, unitAttribute) {
+ let obj = item
+ if (type === 'T') {
+ if (unitAttribute == 0 && num != '') {
+ if (!REGULAR.positiveInteger.test(num)) {
+ obj.num = obj.ynum
+ Toast({
+ message: '鍙兘杈撳叆姝f暣鏁�'
+ })
+ return
+ }
+ }
+ if (unitAttribute == 1 && num != '') {
+ if (!REGULAR.number.test(num)) {
+ Toast({
+ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級'
+ })
+ obj.num = obj.ynum
+ return
+ }
+ }
+ if (num > maxNum) {
+ obj.num = obj.ynum
+ Toast.fail({
+ message: '瓒呭嚭宸ヨ鎬绘暟'
+ })
+ return
+ }
+ } else if (type === 'C' && num > info.value.planNum) {
+ obj.num = obj.ynum
+ Toast.fail({
+ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺'
+ })
+ return
+ }
+ // updateById({ id, num }).then(res => {
+ // if (res.code === 200 && type === 'T') {
+ // getOrocessRecords()
+ // } else if (res.code === 200 && type === 'C') {
+ // // getOrocessRecordCC()
+ // }
+ // })
+ },
+ clickPerformanceType(item, index) {
+ this.form.index = index
+ this.form.type = item.type
+ },
+ submit() {},
+ jumpdj() {},
+ pageDJs() {},
+ dele(id) {
+ // deletedj(id)
+ // .then(res => {
+ // if (res.code === 200) {
+ // djData.value = []
+ // finished.value = false
+ // page.page = 1
+ // djData.value = []
+ // pageDJs()
+ // }
+ // })
+ },
+ confirm() {
+ // console.log('confirm');
+ this.badShow = false
+ },
+ changeChecked(i) {
+ this.cateList[i].active = !this.cateList[i].active
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .bg_cate {
+ width: 100%;
+ height: 88rpx;
+ background: #FFFFFF;
+ display: flex;
+ align-items: center;
+
+ .active {
+ box-sizing: border-box;
+ color: #305ED5 !important;
+ font-weight: 500;
+ border-bottom: 3rpx solid #305ED5;
+ }
+
+ .bg_cate_item {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #555555;
+ }
+ }
+
+ .bg_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-top: 30rpx;
+
+ .bg_list_item {
+ display: flex;
+ flex-direction: column;
+ // margin-bottom: 40rpx;
+ border-bottom: 40rpx #f7f7f7 solid;
+
+ .kong {
+ text-align: center;
+ padding: 30rpx 0;
+ background: #ffffff;
+ font-size: 25rpx;
+
+ span {
+ 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;
+ }
+
+ span {
+ 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;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ }
+ }
+ }
+
+ .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;
+ font-size: 34rpx;
+ color: #222222;
+
+ .bg_list_item_num_item_wl_lx {
+ margin-top: 10rpx;
+ color: #222222;
+ font-size: 28rpx;
+ }
+ }
+
+ // .warning {
+ // color: $nav-stateColor5 !important;
+ // }
+
+ // .err {
+ // color: $nav-stateColor4 !important;
+ // }
+
+ img {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+
+ span {
+ 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;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .bg_plan {
+ width: 100%;
+ // height: 98px;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ 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;
+
+ span {
+ 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;
+
+ span {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+
+
+ }
+ }
+
+ .img_ar {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+
+ .bh_zw {
+ height: 160rpx;
+ }
+
+ .bg_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 30rpx 30rpx 60rpx 30rpx;
+ box-sizing: border-box;
+
+ .bg_footer_submit1 {
+ width: 690rpx;
+ height: 76rpx;
+ background: #FFFFFF;
+ border-radius: 36rpx;
+ border: 1rpx solid #E5E5E5;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .fornt-img {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #305ED5;
+ }
+ }
+
+ .bg_footer_submit {
+ width: 690rpx;
+ height: 88rpx;
+ 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;
+ }
+ }
+
+ .details_dj {
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_list {
+ width: 100%;
+ box-sizing: border-box;
+ background: #ffffff;
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_list_item {
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #E5E5E5;
+ padding: 30rpx;
+ line-height: 42rpx;
+
+ span {
+ &:nth-child(1) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+
+ .details_dj_title {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 30rpx;
+ box-sizing: border-box;
+
+ .details_dj_title_left {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ }
+ }
+
+ .contanir {
+ height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+ .content {
+ margin-top: 20rpx;
+
+ .type-style {
+ width: 325rpx;
+ margin-bottom: 20rpx;
+ }
+ }
+ }
+
+ .bottom-view {
+ left: 40rpx;
+ right: 40rpx;
+ bottom: 0
+ }
+
+ .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;
+ }
+
+ span {
+ 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/pages_adjust/pages/addReceipt/addReceipt.vue b/minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue
new file mode 100644
index 0000000..3b9b607
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/addReceipt/addReceipt.vue
@@ -0,0 +1,462 @@
+<template>
+ <view class="rework">
+ <view class="rework_list">
+ <view class="rework_list_item">
+ <text><b>*</b>鍗曟嵁绫诲瀷</text>
+ <view class="rework_list_item_right" @click="typeShow = true">
+ <text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ <view class="rework_list_item">
+ <text><b>*</b>鍏ュ簱浠撳簱</text>
+ <view class="rework_list_item_right" @click="warehouseShow = true">
+ <text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ </view>
+ <view class="rework_qd">
+ <view class="rework_qd_title">
+ <view class="rework_qd_title_left">
+ <view class="x"></view>
+ <text>{{`鍏ュ簱鐗╂枡娓呭崟${list.length}`}}</text>
+ </view>
+ <view class="rework_qd_title_right" @click="addItem()">
+ <image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix"></image>
+ <text>澧炲姞鍏ュ簱</text>
+ </view>
+ </view>
+ <van-swipe-cell v-for="(item, index) in list" :key="index">
+ <view class="rework_qd_list">
+ <view class="rework_qd_item" @click="locationShow = true">
+ <text><b>*</b>鍏ュ簱璐т綅</text>
+ <view class="rework_qd_item_right">
+ <text :class="item.locationName ? 'black' : ''">{{item.locationName ? item.locationName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ <view class="rework_qd_item" @click="materialsShow = true">
+ <text><b>*</b>鍏ュ簱鐗╂枡</text>
+ <view class="rework_qd_item_right">
+ <text :class="item.materialName ? 'black' : ''">{{item.materialName ? item.materialName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ <template v-if="form.type !== 25">
+ <view class="rework_qd_item" @click="productionShow = true">
+ <text>鐢熶骇宸ュ簭</text>
+ <view class="rework_qd_item_right">
+ <text :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ </template>
+ <view class="rework_qd_item" @click="qualityShow = true">
+ <text><b>*</b>璐ㄩ噺灞炴��</text>
+ <view class="rework_qd_item_right">
+ <text :class="item.qualityTypeName ? 'black' : ''">{{item.qualityTypeName ? item.qualityTypeName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+ <view class="rework_qd_item">
+ <text>鎵规鍙�</text>
+ <view class="rework_qd_item_right">
+ <u--input placeholder="璇疯緭鍏�" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.batch"></u--input>
+ </view>
+ </view>
+ <view class="rework_qd_item">
+ <text><b>*</b>鍏ュ簱鏁伴噺<template v-if="item.unitName">({{ item.unitName }})</template></text>
+ <view class="rework_qd_item_right">
+ <u--input placeholder="0" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.num"></u--input>
+ </view>
+ </view>
+ </view>
+ <template #right>
+ <van-button style="height: 100%;" square type="danger" text="鍒犻櫎" @click="dele(index)" />
+ </template>
+ </van-swipe-cell>
+ </view>
+ <view class="rework_zw"></view>
+ <!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+ <view class="rework_footer">
+ <button class="rework_footer_submit">鎻愪氦</button>
+ </view>
+ <u-toast ref="uToast"></u-toast>
+ <!-- 浠撳簱 -->
+ <Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+ <!-- 鐗╂枡 -->
+ <Material :show="materialsShow" @close="close1" @value="getValue1" />
+ <!-- 璐т綅 -->
+ <location :show="locationShow" :list="locationList" @close="close3" @value="getValue3" />
+ <!-- 宸ュ簭 -->
+ <ProductionProcess :show="productionShow" :list="productionList" @close="close4" @value="getValue4" />
+ <!-- 鍗曟嵁绫诲瀷 -->
+ <u-picker :show="typeShow" keyName="name" :columns="typeList" @confirm="confirm" @cancel="typeClose"></u-picker>
+ <!-- 璐ㄩ噺灞炴�� -->
+ <u-picker :show="qualityShow" :columns="columns" @cancel="qualityShow = false" keyName="name" @confirm="onConfirm1"></u-picker>
+ </view>
+</template>
+
+<script>
+ import Warehouse from '../../components/Warehouse.vue'
+ import location from '../../components/location.vue'
+ import Material from '../../components/Material.vue'
+ import ProductionProcess from '../../components/ProductionProcess.vue'
+ export default {
+ components: { Warehouse, location, Material, ProductionProcess },
+ data() {
+ return {
+ i: 0,
+ form: {
+ warehouseName: '',
+ warehouseId: '',
+ type: '',
+ typeName: ''
+ },
+ locationList: [],
+ productionList: [],
+ columns: [
+ [
+ { name: '鍚堟牸', id: '0' },
+ { name: '涓嶈壇', id: '1' },
+ { name: '鎶ュ簾', id: '2' }
+ ]
+ ],
+ list: [
+ {
+ batch: '',
+ locationId: '',
+ locationIdLabel: '',
+ locationName: '',
+ materialId: '',
+ materialName: '',
+ num: '',
+ hasBom: '',
+ procedureId: '',
+ procedureName: '',
+ qualityType: '',
+ qualityTypeName: '',
+ unitId: '',
+ unitName: ''
+ }
+ ],
+ typeList: [[{name: '閲囪喘鍏ュ簱', id: 25}, {name: '搴撳瓨璋冩暣', id: 28}]],
+ warehouseShow: false,
+ typeShow: false,
+ locationShow: false,
+ materialsShow: false,
+ productionShow: false,
+ qualityShow: false
+ };
+ },
+ methods: {
+ // 璐ㄩ噺灞炴�х‘璁�
+ onConfirm1(value) {
+ this.form.typeName = value.name
+ this.form.type = value.id
+ if (value.id == 25) {
+ this.list.forEach(item => {
+ item.procedureId = ''
+ item.procedureName = ''
+ })
+ }
+ this.typeShow = false
+ },
+ // 閫夋嫨鐗╂枡
+ getValue1(item) {
+ this.list[this.i].materialName = item.mmodelUnionName
+ this.list[this.i].materialId = item.id
+ this.list[this.i].unitId = item.unitId
+ this.list[this.i].hasBom = item.hasBom
+ this.list[this.i].unitName = item.umodelName
+ // 鑾峰彇鐗╂枡涓嬪伐搴�
+ getListByMaterialId({
+ materialId: item.id
+ }).then(res => {
+ if (res.code === 200) {
+ productionList.value = res.data
+ this.list[this.i].procedureId = ''
+ this.list[this.i].procedureName = ''
+ }
+ })
+ materialsShow.value = false
+ },
+ // 鍏抽棴浠撳簱閫夋嫨寮规
+ close1() {
+ this.materialsShow = false
+ },
+ // 閫夋嫨璐т綅
+ getValue3(item) {
+ this.list[this.i].locationId = item.id
+ this.list[this.i].locationName = item.unionName
+ this.list[this.i].qualityType = ''
+ this.list[this.i].qualityTypeName = ''
+ this.list[this.i].locationIdLabel = item.label
+ if (item.label === 'APPLIANCE_ONTEST') {
+ this.list[this.i].qualityType = '0'
+ this.list[this.i].qualityTypeName = '鍚堟牸'
+ } else if (item.label === 'APPLIANCE_OFFTEST') {
+ this.list[this.i].qualityType = '1'
+ this.list[this.i].qualityTypeName = '涓嶈壇'
+ } else if (item.label === 'APPLIANCE_USELESS') {
+ this.list[this.i].qualityType = '2'
+ this.list[this.i].qualityTypeName = '鎶ュ簾'
+ }
+ this.locationShow = false
+ },
+ // 鍏抽棴璐т綅閫夋嫨寮规
+ close3() {
+ this.locationShow = false
+ },
+ // 纭鍗曟嵁绫诲瀷
+ confirm(val) {
+ this.form.type = val.value[0].id
+ this.form.typeName = val.value[0].name
+ this.typeShow = false
+ },
+ // 浠撳簱纭
+ getValue(val) {
+ this.form.warehouseName = val.name
+ this.form.warehouseId = val.id
+ this.warehouseShow = false
+ },
+ typeClose() {
+ this.typeShow = false
+ },
+ close() {
+ this.warehouseShow = false
+ },
+ // 娣诲姞鏄庣粏
+ addItem() {
+ if (!this.form.warehouseId) return this.$refs.uToast.show({ type: 'default', message: "璇烽�夋嫨鍏ュ簱浠撳簱" })
+ this.list.push({
+ batch: '',
+ locationId: this.list[this.list.length - 1].locationId,
+ locationName: this.list[this.list.length - 1].locationName,
+ locationIdLabel: this.list[this.list.length - 1].locationIdLabel,
+ materialId: '',
+ materialName: '',
+ num: '',
+ hasBom: '',
+ procedureId: '',
+ procedureName: '',
+ qualityType: this.list[this.list.length - 1].qualityType,
+ qualityTypeName: this.list[this.list.length - 1].qualityTypeName,
+ unitId: '',
+ unitName: ''
+ })
+ },
+ // 鍒犻櫎
+ dele(index) {
+ if (this.list.length === 1) {
+ this.$refs.uToast.show({ type: 'default', message: "鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭�" })
+ return
+ }
+ this.list.splice(index, 1)
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .rework {
+ width: 100%;
+ min-height: 100vh;
+ background-color: #F7F7F7;
+ .rework_list {
+ display: flex;
+ flex-direction: column;
+ background: #ffffff;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ .rework_list_item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 98rpx;
+ border-bottom: 1rrpx solid #E5E5E5;
+ &:last-child {
+ border: none;
+ }
+ text {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ flex-shrink: 0;
+ b {
+ font-size: 30rpx;
+ color: red;
+ margin-right: 5rpx;
+ }
+ }
+ .rework_list_item_right {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .black {
+ color: black !important;
+ }
+ input {
+ width: 230rpx;
+ height: 60rpx;
+ font-size: 28rpx;
+ border-radius: 8rpx;
+ padding: 0 30rpx;
+ text-align: right;
+ box-sizing: border-box;
+ border: 1rpx solid #CCCCCC;
+ }
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ }
+ }
+ }
+ .rework_qd {
+ margin-top: 40rpx;
+ width: 100%;
+ background: #F7F7F7;
+ .rework_qd_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 30rpx 30rpx;
+ .rework_qd_title_left {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ }
+ }
+ .rework_qd_title_right {
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+ text {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #4275FC;
+ }
+ }
+ }
+ .rework_qd_list {
+ display: flex;
+ flex-direction: column;
+ padding: 0 30rpx;
+ background: #FFFFFF;
+ box-sizing: border-box;
+ margin-bottom: 30rpx;
+ .rework_qd_item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 98rpx;
+ border-bottom: 1rpx solid #E5E5E5;
+ &:last-child {
+ border: none;
+ }
+ text {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ flex-shrink: 0;
+ b {
+ font-size: 30rpx;
+ color: red;
+ margin-right: 5rpx;
+ }
+ }
+ .rework_qd_item_right {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .black {
+ color: black !important;
+ }
+ input {
+ width: 230rpx;
+ height: 60rpx;
+ font-size: 28rpx;
+ border-radius: 8rpx;
+ padding: 0 30rpx;
+ text-align: right;
+ box-sizing: border-box;
+ border: 1rpx solid #CCCCCC;
+ }
+ input::-webkit-input-placeholder { /* WebKit browsers */
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ }
+ }
+ }
+ }
+ .rework_zw {
+ height: 168rpx;
+ }
+ .rework_footer {
+ width: calc(100% - 60rpx);
+ position: fixed;
+ bottom: 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 68rpx 30rpx;
+ .rework_footer_add {
+ flex: 1;
+ height: 88rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: $nav-color;
+ background: #FFFFFF;
+ box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .rework_footer_submit {
+ flex: 1;
+ height: 88rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #ffffff;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: none;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue b/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
new file mode 100644
index 0000000..3ac271f
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
@@ -0,0 +1,324 @@
+<template>
+ <view class="tl">
+ <workOrderInfo :orederMessage="{proUserList:[]}" />
+ <div class="tl_title">
+ <div class="tl_title_left">
+ <div class="tl_title_left_x"></div>
+ <span>鎶曟枡淇℃伅</span>
+ <!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
+ <!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
+ </div>
+ <div class="tl_title_right" @click="add">
+ <image src="../../static/gongdan_ic_shoudong@2x.png" class="add-img" mode=""></image>
+ <span>澧炲姞鎶曟枡</span>
+ </div>
+ </div>
+ <u-swipe-action>
+ <u-swipe-action-item v-for="(item, index) in materialList" :key="index" :options="options"
+ @click="deleItem(index)">
+ <div class="tl_list">
+ <div class="tl_list_item" @click="open1(index)">
+ <div class="tl_list_item_label">閫夋嫨鐗╂枡</div>
+ <div class="tl_list_item_go" v-if="!item.materialName">
+ <span>鐐瑰嚮璺宠浆鍒扮墿鏂欏垪琛�</span>
+ <u-icon name="arrow-right"></u-icon>
+ </div>
+ <div class="tl_list_item_wl" v-else>
+ <div class="tl_list_item_wl_top">
+ <span>{{ item.materialName }}</span>
+ <span> | {{ item.materialCode }}</span>
+ </div>
+ <div class="tl_list_item_wl_bottom">
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸</span>
+ <span class="yellow" v-else-if="item.qualityType == 1">涓嶈壇</span>
+ <span class="red" v-else-if="item.qualityType == 2">鎶ュ簾</span>
+ <span>{{ item.procedureName ? ` / ${item.procedureName}` : ' / -' }}</span>
+ <span>{{ item.locationName ? ` / ${item.locationName}` : ' / -' }}</span>
+ <span>{{ item.batch ? ` / ${item.batch}` : ' / -' }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="tl_list_item">
+ <div class="tl_list_item_label">鎶曟枡鏁伴噺{{ item.unitAttribute }}</div>
+ <div class="tl_list_item_go">
+ <input type="text" @blur="changeNumber(item.num, index, item.unitAttribute)"
+ v-model="item.num" />
+ </div>
+ </div>
+ </div>
+ </u-swipe-action-item>
+ </u-swipe-action>
+ <SelectMaterial ref="selectMaterial" @selectAction="getValue"/>
+ <SelectMultipleMaterial ref="selectMultipleMaterial"/>
+ </view>
+</template>
+
+<script>
+ import workOrderInfo from '@/components/workOrderInfo.vue'
+ import SelectMaterial from '@/components/selectMaterial.vue'
+ import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+
+ import {
+ positiveInteger,
+ number
+ } from '@/common/config'
+ export default {
+ components: {
+ workOrderInfo,
+ SelectMaterial,
+ SelectMultipleMaterial
+ },
+ data() {
+ return {
+ // formList: [{
+ // id: Date.now(),
+ // toolingTypeId: '', // 宸ヨ绫诲瀷
+ // toolingTypeName: '', // 宸ヨ绫诲瀷鍚嶇О
+ // workClothesId: '', // 宸ヨ
+ // workClothesName: '', // 宸ヨ鍚嶇О
+ // num: '', // 鏁伴噺
+ // attribute: '', // 宸ヨ灞炴��
+ // attributeType: '', // 宸ヨ灞炴�х被鍨�
+ // dw: '', // 鐗╂枡鍗曚綅
+ // unitAttribute: ''
+ // }],
+ materialList: [{
+ id: '',
+ materialName: '',
+ materialCode: '',
+ qualityType: '',
+ procedureName: '',
+ locationName: '',
+ batch: '',
+ num: '',
+ unitAttribute: ''
+ }],
+ options: [{
+ text: '鍒犻櫎',
+ style: {
+ backgroundColor: 'red',
+ }
+ }],
+ };
+ },
+ methods: {
+ open1(index) {
+ // this.$refs.selectMaterial.open({})
+ this.$refs.selectMultipleMaterial.open({})
+ },
+ deleItem(index) {
+ if (this.materialList.length === 1) {
+ uni.$u.toast('鑷冲皯淇濈暀涓�鏉℃姇鏂欎俊鎭�')
+ return
+ }
+ this.materialList.splice(index, 1)
+ },
+ add() {
+ this.total += 1
+ this.materialList.unshift({
+ id: '',
+ materialName: '',
+ materialCode: '',
+ qualityType: '',
+ procedureName: '',
+ locationName: '',
+ batch: '',
+ num: '',
+ unitAttribute: ''
+ })
+ },
+ changeNumber(num, index, unitAttribute) {
+ if (unitAttribute === 0 && num !== '') {
+ if (!positiveInteger.test(num)) {
+ uni.$u.toast({
+ message: '鍙兘杈撳叆姝f暣鏁�'
+ })
+ this.materialList[index].num = ''
+ }
+ } else if (unitAttribute === 1 && num !== '') {
+ if (!number.test(num)) {
+ uni.$u.toast({
+ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級'
+ })
+ this.materialList[index].num = ''
+ }
+ }
+ if (num <= 0) {
+ uni.$u.toast({
+ message: '鎶曟枡鏁伴噺涓嶈兘灏忎簬绛変簬0'
+ })
+ this.materialList[index].num = ''
+ }
+ },
+ getValue(item) {
+ console.log(item);
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .tl {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+
+ .tl_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 30rpx;
+
+ .tl_title_left {
+ display: flex;
+ align-items: center;
+
+ .tl_title_left_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: $nav-color;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ }
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+
+ &:nth-child(3) {
+ font-size: 28rpx;
+ font-weight: 500;
+ color: $nav-color;
+ margin-left: 10rpx;
+ }
+ }
+ }
+
+ .tl_title_right {
+ display: flex;
+ align-items: center;
+
+ .add-img {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ // color: $nav-color;
+ }
+ }
+ }
+
+ .tl_list {
+ display: flex;
+ flex-direction: column;
+ background: white;
+ padding: 0 30rpx;
+ margin-bottom: 20rpx;
+
+ .tl_list_item {
+ min-height: 98rpx;
+ // padding: 20rpx 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none !important;
+ }
+
+ .tl_list_item_label {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ .tl_list_item_wl {
+ display: flex;
+ flex-direction: column;
+ align-items: end;
+
+ .tl_list_item_wl_top {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28rpx;
+ color: #222222;
+ }
+ }
+
+ .tl_list_item_wl_bottom {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 28rpx;
+ color: #222222;
+ }
+ }
+ }
+
+ .tl_list_item_go {
+ display: flex;
+ align-items: center;
+
+ input {
+ text-align: right;
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #E5E5E5;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+
+ .tl_zw {
+ height: 160rpx;
+ }
+
+ .tl_footer {
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ padding: 0 30rpx 68rpx 30rpx;
+ box-sizing: border-box;
+
+ .tl_footer_submit {
+ width: 690rpx;
+ height: 88rpx;
+ border: none;
+ background: #4275FC;
+ 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;
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue b/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue
new file mode 100644
index 0000000..265dce2
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/newOutbound/newOutbound.vue
@@ -0,0 +1,380 @@
+<template>
+ <view class="rework">
+ <view class="rework_list">
+ <view class="rework_list_item" @click="typeShow = true">
+ <text>鍗曟嵁绫诲瀷<text style="color: #DE5243;">*</text></text>
+ <view class="rework_list_item_right">
+ <text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right" color="#999999"></u-icon>
+ </view>
+ </view>
+ <view class="rework_list_item" @click="warehouseShow = true">
+ <text>鍑哄簱浠撳簱<text style="color: #DE5243;">*</text></text>
+ <view class="rework_list_item_right">
+ <text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right" color="#999999"></u-icon>
+ </view>
+ </view>
+ </view>
+ <view class="rework_qd">
+ <view class="rework_qd_title">
+ <view class="rework_qd_title_left">
+ <view class="x"></view>
+ <!-- ${list.length} -->
+ <text>{{`鍑哄簱鐗╂枡娓呭崟`}}</text>
+ </view>
+ <!-- <view class="rework_qd_title_right" @click="openMs">
+ <image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix" />
+ <text>澧炲姞鍑哄簱</text>
+ </view> -->
+ </view>
+ <van-swipe-cell v-for="(item, index) in list" :key="index">
+ <view class="rework_qd_item">
+ <image class="rework_qd_item_dele" @click="dele(index)" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" />
+ <view class="rework_qd_item_wl">
+ <text>{{ item.materialName }} | {{ item.materialCode }}</text>
+ </view>
+ <view class="rework_qd_item_cate">
+ <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.procedureName || '-' }} | </text>
+ <text>{{ item.batch || '-' }}</text>
+ </view>
+ <view class="rework_qd_item_hw">
+ <text>鍑哄簱璐т綅锛歿{ item.locationName }}</text>
+ <view class="rework_qd_item_hw_right">
+ <text>鏁伴噺锛�</text>
+ <u--input :customStyle="{width: '180rpx'}" placeholder="0" border="surround" type="number" v-model="item.num" @input="changeNum(item)"></u--input>
+ <text>{{ item.unitName }}</text>
+ </view>
+ </view>
+ </view>
+ </van-swipe-cell>
+ </view>
+ <view class="rework_zw"></view>
+ <view class="rework_footer">
+ <button class="rework_footer_add" @click="openMs">閫夋嫨鐗╂枡</button>
+ <button class="rework_footer_submit" @click="onConfirm">鎻愪氦</button>
+ </view>
+ <!-- 閫夋嫨浠撳簱 -->
+ <Warehouse :show="warehouseShow" @close="close" @value="getValue" />
+ <!-- 閫夋嫨鐗╂枡 -->
+ <SelectMultipleMaterial ref="SelectMultipleMaterial" />
+ <!-- 鍗曟嵁绫诲瀷 -->
+ <u-picker :show="typeShow" :columns="columns" @cancel="typeShow = false" @confirm="onConfirm1" keyName="name"></u-picker>
+ </view>
+</template>
+
+<script>
+ import Warehouse from '../../components/Warehouse.vue'
+ import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+ export default {
+ components: { Warehouse, SelectMultipleMaterial },
+ data() {
+ return {
+ form: {
+ warehouseName: '',
+ warehouseId: '',
+ type: '',
+ typeName: ''
+ },
+ columns: [
+ [
+ { name: '閿�鍞嚭搴�', id: 18 },
+ { name: '搴撳瓨璋冩暣', id: 28 },
+ { name: '浠撳簱鎶ュ簾', id: 21 }
+ ]
+ ],
+ typeShow: false,
+ warehouseShow: false,
+ list: []
+ };
+ },
+ methods: {
+ changeNum(obj) {
+ if (obj.num < 0) {
+ obj.num = ''
+ return uni.showToast({ title: '鍑哄簱鐗╂枡鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+ }
+ if (obj.num > obj.total) {
+ obj.num = ''
+ return uni.showToast({ title: '鍑哄簱鐗╂枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁帮紒', icon: 'none', duration: 2000 });
+ }
+ },
+ // 閫夋嫨浠撳簱鍥炶皟
+ getValue(item) {
+ this.form.warehouseName = item.name
+ this.form.warehouseId = item.id || 1
+ this.list = []
+ this.warehouseShow = false
+ },
+ // 鍗曟嵁绫诲瀷纭
+ onConfirm1(value) {
+ this.form.typeName = value.value[0].name
+ this.form.type = value.value[0].id
+ this.typeShow = false
+ },
+ // 鍏抽棴浠撳簱閫夋嫨寮规
+ close() {
+ this.warehouseShow = false
+ },
+ // 鍒犻櫎
+ dele(index) {
+ if (this.list.length === 1) {
+ uni.showToast({ title: '鑷冲皯淇濈暀涓�鏉$墿娴佹竻鍗曚俊鎭紒', icon: 'none', duration: 2000 });
+ return
+ }
+ this.list.splice(index, 1)
+ },
+ // 鎵撳紑閫夋嫨鐗╂枡
+ openMs() {
+ if (!this.form.warehouseId) return uni.showToast({ title: '璇峰厛閫夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+ this.$refs.SelectMultipleMaterial.open({})
+ },
+ // 鑾峰彇褰撳ぉ骞存湀鏃�
+ getDay() {
+ var date = new Date();
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ var day = date.getDate();
+ return `${year}-${month <= 9 ? `0${month}` : month}-${day <= 9 ? `0${day}` : day}`
+ },
+ // 鎻愪氦
+ onConfirm() {
+ if (!this.form.type) return uni.showToast({ title: '璇烽�夋嫨鍗曟嵁绫诲瀷', icon: 'none', duration: 2000 });
+ if (!this.form.warehouseId) return uni.showToast({ title: '璇烽�夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+ if (this.list.length === 0) return uni.showToast({ title: '鑷冲皯閫夋嫨涓�鏉″嚭搴撶墿鏂�', icon: 'none', duration: 2000 });
+ for (let i = 0; i < this.list.length; i++) {
+ if (!this.list[i].num || this.list[i].num == '' || this.list[i].num <= 0) {
+ return uni.showToast({ title: `绗�${i + 1}涓嚭搴撶墿鏂欐暟閲忓繀椤诲ぇ浜�0`, icon: 'none', duration: 2000 });
+ }
+ if (this.list[i].num > this.list[i].total) {
+ return uni.showToast({ title: `绗�${i + 1}涓墿鏂欐暟閲忎笉鑳藉ぇ浜庡簱瀛橀噺锛乣, icon: 'none', duration: 2000 });
+ }
+ }
+ createForStandard({
+ billType: this.form.type,
+ planDate: this.getDay(),
+ origin: 0,
+ type: 0,
+ warehouseId: this.form.warehouseId,
+ woutBoundDetailBeans: this.list
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({ title: '鍑哄簱鎴愬姛', icon: 'none', duration: 2000 });
+ setTimeout(() => {
+ uni.navigateBack({ delta: 1 });
+ }, 2000)
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .rework {
+ width: 100%;
+ .rework_list {
+ display: flex;
+ flex-direction: column;
+ background: white;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ .rework_list_item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 98rpx;
+ border-bottom: 1rpx solid #E5E5E5;
+ &:last-child {
+ border: none;
+ }
+ text {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ flex-shrink: 0;
+ b {
+ font-size: 30rpx;
+ color: red;
+ margin-right: 5rpx;
+ }
+ }
+ .rework_list_item_right {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .black {
+ color: black !important;
+ }
+ input {
+ width: 230rpx;
+ font-size: 28rpx;
+ border: none;
+ }
+ input::-webkit-input-placeholder { /* WebKit browsers */
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ }
+ }
+ }
+ }
+ .rework_qd {
+ margin-top: 40rpx;
+ .rework_qd_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 30rpx 30rpx;
+ .rework_qd_title_left {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .x {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ }
+ }
+ .rework_qd_title_right {
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+ text {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #4275FC;
+ }
+ }
+ }
+ .rework_qd_item {
+ background: #ffffff;
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 30rpx;
+ position: relative;
+ .rework_qd_item_dele {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 48rpx;
+ height: 48rpx;
+ }
+ .rework_qd_item_wl {
+ text {
+ font-size: 30rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+ .rework_qd_item_cate {
+ margin-top: 18rpx;
+ text {
+ font-size: 24rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+ .rework_qd_item_hw {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 24rpx;
+ text {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+ .rework_qd_item_hw_right {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #666666;
+ }
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ background: #FFFFFF;
+ border-radius: 8rpx;
+ border: 1rpx solid #CCCCCC;
+ margin: 0 20rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ text-align: right;
+ }
+ }
+ }
+ }
+ }
+ .rework_zw {
+ height: 168rpx;
+ }
+ .rework_footer {
+ width: calc(100% - 60rpx);
+ position: fixed;
+ bottom: 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 68rpx 30rpx;
+ .rework_footer_add {
+ flex: 1;
+ height: 88rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: $nav-color;
+ background: #FFFFFF;
+ box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .rework_footer_submit {
+ flex: 1;
+ height: 88rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #ffffff;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: none;
+ margin-left: 22rpx;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue b/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
new file mode 100644
index 0000000..8899d5c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
@@ -0,0 +1,419 @@
+<template>
+ <view class="zk">
+ <view class="zk_list">
+ <view class="zk_list_item" @click="open('d')">
+ <text>鍗曟嵁绫诲瀷</text>
+ <view class="zk_list_item_n">
+ <text :style="data.typeName ? 'color: black;' : ''">{{data.typeName ? data.typeName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="zk_list_item" @click="open('c')">
+ <text>鍑哄簱浠撳簱</text>
+ <view class="zk_list_item_n">
+ <text :style="data.exWarehouse ? 'color: black;' : ''">{{data.exWarehouse ? data.exWarehouse : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="zk_list_item" @click="open('r')">
+ <text>鍏ュ簱浠撳簱</text>
+ <view class="zk_list_item_n">
+ <text :style="data.warehousingWarehouseName ? 'color: black;' : ''">{{data.warehousingWarehouseName ? data.warehousingWarehouseName : '璇烽�夋嫨'}}</text>
+ <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
+ </view>
+ </view>
+ </view>
+ <view class="zk_title">
+ <view class="zk_title_i"></view>
+ <text>杞嚭鐗╂枡鍒楄〃</text>
+ </view>
+ <view class="zk_wl">
+ <template v-if="view.MaterialList.length > 0">
+ <van-swipe-cell v-for="(item, i) in view.MaterialList" :key="i">
+ <view class="zk_wl_item">
+ <text>{{item.materialName}}锝渰{item.materialCode}}</text>
+ <text>
+ <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.procedureName ? item.procedureName : '-'}} | </text>
+ <text>{{item.batch ? item.batch : '-'}}</text>
+ </text>
+ <text>璐т綅锛歿{item.locationName}}</text>
+ <view class="zk_wl_item_num">
+ <text>杞嚭鏁伴噺({{item.unitName}})锛�</text>
+ <input type="number" v-model="item.total" placeholder="0" />
+ </view>
+ </view>
+ <template #right>
+ <van-button square type="danger" style="height: 100%;" text="鍒犻櫎" @click="dele(i)" />
+ </template>
+ </van-swipe-cell>
+ </template>
+ <view class="zk_wl_w" v-else>
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
+ </view>
+ <view class="zk_z"></view>
+ <view class="zk_footer">
+ <view class="zk_footer_wl" @click="open('w')">閫夋嫨鐗╂枡</view>
+ <view style="width: 20rpx"></view>
+ <view class="zk_footer_submit" @click="submit">鎻愪氦</view>
+ </view>
+ <!-- 閫夋嫨浠撳簱 -->
+ <Warehouse :show="view.Warehouse" @close="view.Warehouse = false" @value="getValue" />
+ <!-- 閫夋嫨鐗╂枡 -->
+ <SelectMultipleMaterial ref="SelectMultipleMaterial" />
+ <!-- 鍗曟嵁绫诲瀷 -->
+ <u-picker :show="view.type" :columns="view.documentTypeDate" keyName="name" @cancel="onCancel" @confirm="onConfirm"></u-picker>
+ </view>
+</template>
+
+<script>
+ import { setTime } from '@/util/utils.js'
+ import { documentType } from '@/util/constData.js'
+ import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
+ import Warehouse from '../../components/Warehouse.vue'
+ export default {
+ components: {
+ SelectMultipleMaterial,
+ Warehouse
+ },
+ data() {
+ return {
+ data: {
+ type: '',
+ outUserId: '',
+ inUserId: '',
+ typeName: '',
+ exWarehouse: '',
+ exWarehouseId: '',
+ warehousingWarehouse: '',
+ warehousingWarehouseName: ''
+ },
+ view: {
+ type: false,
+ Warehouse: false,
+ Material: false,
+ status: '',
+ MaterialList: [],
+ documentTypeDate: [
+ [
+ { name: '杞﹂棿棰嗘枡', id: 1 },
+ { name: '杞﹂棿杞簱', id: 5 },
+ { name: '澶栧崗棰嗘枡杞簱', id: 6 },
+ { name: '澶栧崗瀹屽伐杞簱', id: 7 },
+ { name: '浜у搧鍏ュ簱', id: 8 },
+ { name: '浜у搧杞簱', id: 9 },
+ { name: '璁╂鏀捐鍏ュ簱', id: 10 },
+ { name: '璁╂鏀捐杞簱', id: 11 },
+ { name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+ { name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+ { name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+ { name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+ { name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+ { name: '搴熷搧鍏ュ簱', id: 30 }
+ ]
+ ],
+ warehouseQualityType: '',
+ customFieldName: {
+ text: 'name'
+ }
+ }
+ };
+ },
+ methods: {
+ // 浠撳簱鍥炶皟
+ getValue(val) {
+ if (this.view.status === 'c') {
+ this.data.exWarehouse = val.name
+ this.data.exWarehouseId = val.id || 1
+ this.data.outUserId = val.managerId || 3
+ } else if (this.view.status === 'r') {
+ this.data.warehousingWarehouseName = val.name
+ this.data.warehousingWarehouse = val.id || 2
+ this.data.inUserId = val.managerId || 4
+ this.view.warehouseQualityType = val.tmodel.label
+ }
+ view.Warehouse = false
+ },
+ // 纭鍗曟嵁绫诲瀷
+ onConfirm(val) {
+ this.data.type = val.value[0].id
+ this.data.typeName = val.value[0].name
+ this.view.type = false
+ },
+ onCancel() {
+ this.view.type = false
+ },
+ // 鍒涘缓杞簱鍗�
+ submit() {
+ if (!this.data.type) return uni.showToast({ title: '鍗曟嵁绫诲瀷涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.data.exWarehouse) return uni.showToast({ title: '鍑哄簱浠撳簱涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.data.warehousingWarehouse) return uni.showToast({ title: '鍏ュ簱浠撳簱涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (this.view.MaterialList.length === 0) return uni.showToast({ title: '杞嚭鐗╂枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ for (let i = 0; i < this.view.MaterialList.length; i++) {
+ if (!this.view.MaterialList[i].total || this.view.MaterialList[i].total <= 0) {
+ uni.showToast({ title: '杞嚭鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+ return
+ }
+ if (Number(this.view.MaterialList[i].total) > Number(this.view.MaterialList[i].num)) {
+ uni.showToast({ title: '杞簱鐨勭墿鏂欐暟閲忎笉鑳藉ぇ浜庡簱瀛橀噺锛�', icon: 'none', duration: 2000 });
+ return
+ }
+ }
+ let time = setTime(new Date(), '-')
+ let wtransferDetailBeanList = []
+ this.view.MaterialList.forEach((element) => {
+ wtransferDetailBeanList.push({
+ batch: element.batch,
+ materialId: element.materialId,
+ procedureId: element.procedureId,
+ procedureName: element.procedureName,
+ qualityType: element.qualityType,
+ unitId: element.unitId,
+ outPlanNum: element.total,
+ proceduresId: element.procedureId,
+ inLocationId: null,
+ outLocationId: element.locationId,
+ inWarehouseId: data.exWarehouseId,
+ outWarehouseId: data.warehousingWarehouse
+ })
+ })
+ createZK({
+ type: this.data.type,
+ outPlandate: time,
+ inPlandate: time,
+ origin: 0,
+ outUserId: this.data.outUserId,
+ inUserId: this.data.inUserId,
+ inWarehouseId: this.data.warehousingWarehouse,
+ outWarehouseId: this.data.exWarehouseId,
+ wtransferDetailBeanList
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({ title: '鍒涘缓鎴愬姛锛�', icon: 'none', duration: 2000 });
+ setTimeout(() => {
+ uni.navigateBack({ delta: 1 });
+ }, 2000)
+ }
+ })
+ },
+ // 鎵撳紑閫夋嫨寮规
+ open(type) {
+ if (type === 'd') {
+ this.view.type = true
+ } else if (type === 'c') {
+ this.view.status = 'c'
+ this.view.Warehouse = true
+ } else if (type === 'r') {
+ this.view.status = 'r'
+ this.view.Warehouse = true
+ } else if (type === 'w') {
+ if (this.data.exWarehouseId) {
+ if (this.data.warehousingWarehouseName) {
+ // let arr = []
+ // this.view.MaterialList.forEach(element => {
+ // arr.push(element.id)
+ // })
+ // const { selected } = Material.value
+ // Material.value.selected = arr
+ // view.Material = true
+ this.$refs.SelectMultipleMaterial.open({})
+ } else {
+ uni.showToast({ title: '璇峰厛閫夋嫨鍏ュ簱浠撳簱', icon: 'none', duration: 2000 });
+ }
+ } else {
+ uni.showToast({ title: '璇峰厛閫夋嫨鍑哄簱浠撳簱', icon: 'none', duration: 2000 });
+ }
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .zk {
+ position: absolute;
+ width: 100%;
+
+ .zk_list {
+ padding: 0 30rpx;
+ background: white;
+ margin-top: 20rpx;
+
+ .zk_list_item {
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+
+ &:last-child {
+ border: none !important;
+ }
+
+ text {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ .zk_list_item_n {
+ display: flex;
+ align-items: center;
+
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+
+ .zk_title {
+ padding: 40rpx 30rpx 30rpx 30rpx;
+ display: flex;
+ align-items: center;
+
+ .zk_title_i {
+ width: 8rpx;
+ height: 30rpx;
+ background: #4275FC;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ }
+
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .zk_wl {
+ background: white;
+
+ .zk_wl_w {
+ width: 100%;
+ height: 200rpx;
+ background: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 26rpx;
+ color: black;
+ }
+
+ .zk_wl_item {
+ display: flex;
+ flex-direction: column;
+ padding: 30rpx;
+ border-bottom: 1rpx solid #e2e2e2;
+
+ .zk_wl_item_num {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 30rpx;
+
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin: 0 !important;
+ }
+
+ input {
+ width: 180rpx;
+ height: 60rpx;
+ background: #FFFFFF;
+ border-radius: 8rpx;
+ border: 1rpx solid #CCCCCC;
+ padding: 0 30rpx;
+ font-size: 28rpx;
+ }
+
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+
+ &:nth-child(2) {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ margin-bottom: 30rpx;
+
+ text {
+ font-size: 24rpx;
+ }
+ }
+
+ &:nth-child(3) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ }
+
+ .zk_z {
+ height: 168rpx;
+ }
+
+ .zk_footer {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0 30rpx;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ padding-bottom: 68rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .zk_footer_wl {
+ flex: 1;
+ height: 88rpx;
+ background: #FFFFFF;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: $nav-color;
+ }
+
+ .zk_footer_submit {
+ flex: 1;
+ height: 88rpx;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue b/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue
new file mode 100644
index 0000000..100f272
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/outboundDetails/outboundDetails.vue
@@ -0,0 +1,331 @@
+<template>
+ <view class="content1">
+ <view class="order-message">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!-- <text>鍑哄簱鍗曞彿锛�</text>-->
+ <text>{{ data.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <text class="warning" v-if="data.status === 0">寰呭嚭搴�</text>
+ <text class="green" v-else-if="data.status === 1">宸插嚭搴�</text>
+ <text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+ </view>
+ </view>
+ <view class="content_list_item_content">
+ <view style="margin-top: 0 " class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="data.billType">
+ {{ orderTyepToStr(data.billType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍑鸿揣浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.warehouseCode + ' | ' + data.warehouseName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.planDate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="data.originType">
+ {{ tyepToStr(data.originType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.originCode ? data.originCode : '-' }}
+ </view>
+ </view>
+ <view v-if="data.updateName" class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鎿嶄綔浜猴細</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.updateName + ' - ' + data.updateMobile }}
+ </view>
+ </view>
+ <view v-if="data.updateTime" class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鎿嶄綔鏃堕棿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.updateTime }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- 杞簱鐗╂枡 -->
+ <view class="title">
+ <text class="title-prefix"></text>
+ <text>{{ data.status == 1 ? '宸插嚭搴撶墿鏂�' : '寰呭嚭搴撶墿鏂�' }}</text>
+ </view>
+ <view class="material-content">
+ <view class="item-style" v-for="(item, index) in materailArray" :key="index">
+ <view class="item-title-style">
+ <text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+ </view>
+ <view class="item-content-style">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鎵规鍙凤細</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.batch }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏁伴噺锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.num + item.unitName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">宸ュ簭锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.procedureName || '-' }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+ <view class="content_list_item_content_item_nr">
+ <text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+ <text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+ <text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+ <text v-else>-</text>
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍑哄簱璐т綅锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.locationName }}
+ </view>
+ </view>
+ </view>
+ <!-- <view style="margin-top:10rpx; background: #cccccc; height:0.5rpx"></view>-->
+ </view>
+ </view>
+ <view v-if="data.status === 0" style="height:94rpx"></view>
+ <view v-if="data.status === 0" class="bottom-button">
+ <button class="button button-action" @click="submit">鍘诲嚭搴�</button>
+ <button class="button button-cancel" @click="cancel">鍙栨秷</button>
+ </view>
+ </view>
+</template>
+
+<script>
+ import { orderTyepToStr } from '@/util/constData.js'
+
+ export default {
+ data() {
+ return {
+ data: {},
+ types: [
+ { name: '鍏ㄩ儴', id: '', isActive: true },
+ { name: '閲囪喘璁㈠崟', id: '0', isActive: false },
+ { name: '鐢熶骇宸ュ崟', id: '1', isActive: false },
+ { name: '閿�鍞鍗�', id: '2', isActive: false },
+ { name: '杞簱鍗�', id: '3', isActive: false },
+ { name: '鐩樼偣鍗�', id: '4', isActive: false },
+ ],
+ materailArray: []
+ };
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.types) {
+ if (parseInt(item.id) === type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ submit() {
+
+ },
+ cancel() {
+
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content1 {
+ padding: 30rpx;
+ background: white;
+
+ .order-message {
+ display: flex;
+ flex-direction: column;
+
+ // border-bottom: 1rpx solid #ececec;
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+
+ // align-items: center;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+
+ .title {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+ margin-top: 30rpx;
+
+ .title-prefix {
+ display: inline-block;
+ background-color: #4275FC;
+ height: 30rpx;
+ width: 8rpx;
+ border-radius: 1rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .material-content {
+ margin-top: 30rpx;
+
+ .item-style {
+ width: initial;
+ border-bottom: 1rpx solid #ececec;
+ margin-top: 30rpx;
+
+ &:last-child {
+ border: none;
+ }
+
+ .item-title-style {
+ margin-bottom: 12rpx;
+ font-size: 30rpx;
+ }
+
+ .item-content-style {
+ // padding: 24rpx 30rpx;
+ // background-color: #f7f7f7;
+ // border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ padding: 1rpx 1rpx 30rpx 1rpx;
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .bottom-button {
+ padding: 1rpx;
+ background-color: #f7f7f7;
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ height: 188rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .button-action {
+ background: #fff;
+ color: $nav-color;
+ }
+
+ .button-cancel {
+ background: $nav-color;
+ color: #FFFFFF;
+ }
+
+ .button {
+ margin: 32rpx 32rpx 68rpx 32rpx;
+ height: 88rpx;
+ width: 334rpx;
+ border: none;
+ border-radius: 8rpx;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue b/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue
new file mode 100644
index 0000000..5aeff0b
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/outboundList/outboundList.vue
@@ -0,0 +1,562 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+ placeholder="鎼滅储鍑哄簱鍗曞彿/鍑哄簱浠撳簱">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">璁″垝鏃ユ湡</view>
+ <view class="Search_item_content" @click="openDate">
+ <view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+ {{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+ <text>-</text>
+ <view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+ {{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+ :key="item.id" @click="changeTags(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ </template>
+ </Search>
+ <view class="content_search_x"></view>
+ <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+ <!-- item澶撮儴瑙嗗浘 -->
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!-- <text>杞簱鍗曞彿锛�</text>-->
+ <text>{{ item.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <span class="warning" v-if="item.status === 0">寰呭嚭搴�</span>
+ <span class="green" v-else-if="item.status === 1">宸插嚭搴�</span>
+ <span class="info" v-else-if="item.status === 2">宸插彇娑�</span>
+ </view>
+ </view>
+ <!-- item涓婚淇℃伅閮ㄥ垎 -->
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ orderTyepToStr(item.billType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍑哄簱浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.warehouseName + ' | ' + item.warehouseCode }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鍑哄簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.planDate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ tyepToStr(item.originType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.originCode ? item.originCode : '-' }}
+ </view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import LabelSelection from '@/components/LabelSelection.vue'
+ import { orderTyepToStr } from '@/util/constData.js'
+ export default {
+ components: {
+ Search,
+ LabelSelection
+ },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ planDateEnd: "",
+ planDateStart: "",
+ code: "",
+ originType: "",
+ status: ""
+ },
+ types: [
+ { name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+ { name: '鏈哄彴澶囨枡', id: '2', isActive: false },
+ { name: '杞﹂棿杞簱', id: '3', isActive: false },
+ { name: '瀹屽伐鍏ュ簱', id: '4', isActive: false },
+ { name: '璁″垝棰嗘枡', id: '5', isActive: false },
+ { name: '澶栧崗棰嗘枡', id: '6', isActive: false },
+ { name: '澶栧崗瀹屽伐杞簱', id: '7', isActive: false },
+ { name: '浜у搧鍏ュ簱', id: '8', isActive: false },
+ { name: '浜у搧杞簱', id: '9', isActive: false },
+ { name: '璁╂鏀捐鍏ュ簱', id: '10', isActive: false },
+ { name: '璁╂鏀捐杞簱', id: '11', isActive: false },
+ { name: '瀹㈣繑杩斾慨棰嗘枡', id: '12', isActive: false },
+ { name: '瀹㈣繑杩斾慨鍏ュ簱', id: '13', isActive: false },
+ { name: '璺ㄧ粍缁囪浆搴�', id: '14', isActive: false },
+ { name: '宸ュ簭鎶ュ簾', id: '15', isActive: false },
+ { name: '瀹㈤��杩斾慨棰嗘枡', id: '16', isActive: false },
+ { name: '瀹㈤��杩斾慨鍏ュ簱', id: '17', isActive: false },
+ { name: '閿�鍞嚭搴�', id: '18', isActive: false },
+ { name: '璁╂閿�鍞�', id: '19', isActive: false },
+ { name: '宸ュ崟鎶曟枡', id: '20', isActive: false },
+ { name: '浠撳簱鎶ュ簾', id: '21', isActive: false },
+ { name: '瀹㈤��妫�楠岄鏂�', id: '22', isActive: false },
+ { name: '瀹㈣繑妫�楠岄鏂�', id: '23', isActive: false },
+ { name: '搴撳瓨璋冩暣', id: '28', isActive: false },
+ { name: '搴熷搧鍏ュ簱', id: '30', isActive: false }
+ ],
+ tagList: [
+ {
+ id: "",
+ name: "鍏ㄩ儴",
+ num: '0',
+ },
+ {
+ id: "0",
+ name: "寰呭嚭搴�",
+ num: '0',
+ },
+ {
+ id: "1",
+ name: "宸插嚭搴�",
+ num: "0",
+ },
+ {
+ id: "2",
+ name: "宸插彇娑�",
+ num: "0",
+ }
+ ],
+ data: [], // 宸ュ簭鏁版嵁
+ factoryList: [],
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: []
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.orderType) {
+ if (item.id == type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => {
+ item.isActive = false
+ })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [{
+ direction: 'ASC',
+ property: 'publishDate'
+ }]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ background: white;
+
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ // &:nth-child(1) {
+ // margin-top: 0 !important;
+ // }
+ // &:nth-child(2) {
+ // margin-top: 0 !important;
+ // }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .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/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/pages_adjust/pages/transferList/transferList.vue b/minipro_standard/pages_adjust/pages/transferList/transferList.vue
new file mode 100644
index 0000000..411c87c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/transferList/transferList.vue
@@ -0,0 +1,774 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+ placeholder="鎼滅储杞簱鍗曞彿">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">璁″垝鏃ユ湡</view>
+ <view class="Search_item_content" @click="openDate">
+ <view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+ {{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+ <text>-</text>
+ <view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+ {{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+ :key="item.id" @click="changeTags(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ </template>
+ </Search>
+ <view class="content_search_x"></view>
+ <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+ <!-- item澶撮儴瑙嗗浘 -->
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!-- <text>杞簱鍗曞彿锛�</text>-->
+ <text>{{ item.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <text class="created" v-if="item.status === 0">寰呭嚭搴�</text>
+ <text class="warning" v-else-if="item.status === 1">宸插嚭搴�</text>
+ <text class="green" v-else-if="item.status === 2">宸插叆搴�</text>
+ <text class="info" v-else-if="item.status === 3">宸插彇娑�</text>
+ <text class="info" v-else-if="item.status === 4">宸查��鍥�</text>
+ </view>
+ </view>
+ <!-- item涓婚淇℃伅閮ㄥ垎 -->
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ tyepToStr(item.type) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">杞嚭浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.outWarehouseName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">杞嚭浠撶鍛橈細</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.outUserName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">杞叆浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.inWarehouseName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">杞叆浠撶鍛橈細</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.inUserName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝杞嚭鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.outPlandate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝杞叆鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.inPlandate }}
+ </view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import LabelSelection from '@/components/LabelSelection.vue'
+ export default {
+ components: {
+ Search,
+ LabelSelection
+ },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ startDate: '',
+ endDate: '',
+ procedureIds: [],
+ departIds: '',
+ mixParam: '',
+ cateIds: []
+ },
+ types: [
+ // { name: '鍏ㄩ儴', id: '', isActive: false },
+ // { name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+ // { name: '杞﹂棿澶囨枡', id: '2', isActive: false },
+ // { name: '鍏朵粬', id: '3', isActive: false },
+ {
+ name: '杞﹂棿棰嗘枡',
+ id: '1',
+ isActive: false
+ },
+ {
+ name: '璁″垝棰嗘枡',
+ id: '2',
+ isActive: false
+ },
+ {
+ name: '鏈哄彴澶囨枡',
+ id: '3',
+ isActive: false
+ },
+ {
+ name: '瀹屽伐鍏ュ簱',
+ id: '4',
+ isActive: false
+ },
+ {
+ name: '杞﹂棿杞簱',
+ id: '5',
+ isActive: false
+ },
+ {
+ name: '澶栧崗棰嗘枡杞簱',
+ id: '6',
+ isActive: false
+ },
+ {
+ name: '澶栧崗瀹屽伐杞簱',
+ id: '7',
+ isActive: false
+ },
+ {
+ name: '浜у搧鍏ュ簱',
+ id: '8',
+ isActive: false
+ },
+ {
+ name: '浜у搧杞簱',
+ id: '9',
+ isActive: false
+ },
+ {
+ name: '璁╂鏀捐鍏ュ簱',
+ id: '10',
+ isActive: false
+ },
+ {
+ name: '璁╂鏀捐杞簱',
+ id: '11',
+ isActive: false
+ },
+ {
+ name: '瀹㈣繑杩斾慨棰嗘枡',
+ id: '12',
+ isActive: false
+ },
+ {
+ name: '瀹㈣繑杩斾慨鍏ュ簱',
+ id: '13',
+ isActive: false
+ },
+ {
+ name: '璺ㄧ粍缁囪浆搴�',
+ id: '14',
+ isActive: false
+ },
+ {
+ name: '宸ュ簭鎶ュ簾',
+ id: '15',
+ isActive: false
+ },
+ {
+ name: '瀹㈤��杩斾慨棰嗘枡',
+ id: '16',
+ isActive: false
+ },
+ {
+ name: '瀹㈤��杩斾慨鍏ュ簱',
+ id: '17',
+ isActive: false
+ },
+ {
+ name: '搴熷搧鍏ュ簱',
+ id: '30',
+ isActive: false
+ }
+ ],
+ orderType: [
+ { name: '杞﹂棿棰嗘枡', id: 1 },
+ { name: '璁″垝棰嗘枡', id: 2 },
+ { name: '鏈哄彴澶囨枡', id: 3 },
+ { name: '瀹屽伐鍏ュ簱', id: 4 },
+ { name: '杞﹂棿杞簱', id: 5 },
+ { name: '澶栧崗棰嗘枡杞簱', id: 6 },
+ { name: '澶栧崗瀹屽伐杞簱', id: 7 },
+ { name: '浜у搧鍏ュ簱', id: 8 },
+ { name: '浜у搧杞簱', id: 9 },
+ { name: '璁╂鏀捐鍏ュ簱', id: 10 },
+ { name: '璁╂鏀捐杞簱', id: 11 },
+ { name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+ { name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+ { name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+ { name: '宸ュ簭鎶ュ簾', id: 15 },
+ { name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+ { name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+ { name: '搴熷搧鍏ュ簱', id: 30 }
+ ],
+ tagList: [{
+ id: "",
+ name: "鍏ㄩ儴",
+ num: "10",
+ },
+ {
+ id: "0",
+ name: "宸茶鍒�",
+ num: "132",
+ },
+ {
+ id: "1",
+ name: "宸茶浆鍑�",
+ num: "3",
+ },
+ {
+ id: "2",
+ name: "宸茶浆鍏�",
+ num: "12",
+ },
+ {
+ id: "3",
+ name: "宸插彇娑�",
+ num: "12",
+ }
+ ],
+ data: [], // 宸ュ簭鏁版嵁
+ factoryList: [],
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: [{
+ id: 1,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 2,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 3,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 4,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 5,
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ }
+ ]
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.orderType) {
+ if (item.id == type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => {
+ item.isActive = false
+ })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [{
+ direction: 'ASC',
+ property: 'publishDate'
+ }]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ background: white;
+
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ // &:nth-child(1) {
+ // margin-top: 0 !important;
+ // }
+ // &:nth-child(2) {
+ // margin-top: 0 !important;
+ // }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .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/warehousingDetails/warehousingDetails.vue b/minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue
new file mode 100644
index 0000000..95f001b
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingDetails/warehousingDetails.vue
@@ -0,0 +1,330 @@
+<template>
+ <view class="content">
+ <view class="order-message">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!--<text>鍏ュ簱鍗曞彿锛�</text>-->
+ <text>{{ data.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <text class="warning" v-if="data.status === 0">寰呭叆搴�</text>
+ <text class="green" v-else-if="data.status === 1">宸插叆搴�</text>
+ <text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+ </view>
+ </view>
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ orderTyepToStr(data.billType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍏ヨ揣浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.warehouseCode + ' | ' + data.warehouseName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鏃ユ湡锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.planDate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ tyepToStr(data.originType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.originCode ? data.originCode : '-' }}
+ </view>
+ </view>
+ <view v-if="data.updateName" class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鎿嶄綔浜猴細</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.updateName + ' - ' + data.updateMobile }}
+ </view>
+ </view>
+ <view v-if="data.updateTime" class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鎿嶄綔鏃堕棿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.updateTime }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- 杞簱鐗╂枡 -->
+ <view class="title">
+ <text class="title-prefix"></text>
+ <text>{{ data.status==1 ? '宸插叆搴撶墿鏂�' : '寰呭叆搴撶墿鏂�' }}</text>
+ </view>
+ <view class="material-content">
+ <view class="item-style" v-for="(item, index) in materailArray" :key="index">
+ <view class="item-title-style">
+ <text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+ </view>
+ <view class="item-content-style">
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鎵规鍙凤細</text>
+ <text class="content_list_item_content_item_nr">{{ item.batch || '-' }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鏁伴噺锛�</text>
+ <text class="content_list_item_content_item_nr">{{ item.doneNum + item.unitName }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">宸ュ簭锛�</text>
+ <text class="content_list_item_content_item_nr">{{ item.procedureName || '-' }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+ <view class="content_list_item_content_item_nr">
+ <text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+ <text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+ <text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+ <text v-else>-</text>
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鍏ュ簱璐т綅锛�</text>
+ <text
+ class="content_list_item_content_item_nr">{{ item.locationName ? item.locationName : '-' }}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view v-if="data.status === 0" style="height:94rpx"></view>
+ <view v-if="data.status === 0" class="bottom-button">
+ <button class="button button-cancel" @click="submit">鍘诲叆搴�</button>
+ <!-- <button class="button button-cancel" @click="cancel">鍙栨秷</button> -->
+ </view>
+ </view>
+</template>
+
+<script>
+ import { orderTyepToStr } from '@/util/constData.js'
+ export default {
+ data() {
+ return {
+ types: [
+ { name: '鍏ㄩ儴', id: '', isActive: true },
+ { name: '閲囪喘璁㈠崟', id: '0', isActive: false },
+ { name: '鐢熶骇宸ュ崟', id: '1', isActive: false },
+ { name: '閿�鍞鍗�', id: '2', isActive: false },
+ { name: '杞簱鍗�', id: '3', isActive: false },
+ { name: '鐩樼偣鍗�', id: '4', isActive: false },
+ ],
+ data: {}
+ };
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.types) {
+ if (parseInt(item.id) === this.type) {
+ return item.name
+ }
+ }
+ return '-'
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content {
+ background: white;
+
+ .order-message {
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+
+ // border-bottom: 1rpx solid #ececec;
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+
+ // align-items: center;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item:first-child {
+ margin-top: 0;
+ }
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+
+ .title {
+ background-color: #f7f7f7;
+ padding: 30rpx;
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+
+ .title-prefix {
+ display: inline-block;
+ background-color: #4275FC;
+ height: 30rpx;
+ width: 8rpx;
+ border-radius: 1rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .material-content {
+ padding: 30rpx;
+
+ .item-style {
+ width: initial;
+ border-bottom: 1rpx solid #ececec;
+ margin-top: 30rpx;
+
+ &:first-child {
+ margin-top: 0 !important;
+ }
+
+ &:last-child {
+ border: none;
+ }
+
+ .item-title-style {
+ margin-bottom: 12rpx;
+ font-size: 30rpx;
+ }
+
+ .item-content-style {
+ // padding: 24rpx 30rpx;
+ // background-color: #f7f7f7;
+ // border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ padding-bottom: 30rpx;
+ justify-content: space-between;
+
+ &:last-child {
+ padding-bottom: 0;
+ }
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .bottom-button {
+ padding: 1rpx;
+ background-color: #f7f7f7;
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ height: 188rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .button-action {
+ background: #fff;
+ color: $nav-color;
+ }
+
+ .button-cancel {
+ background: $nav-color;
+ color: #FFFFFF;
+ }
+
+ .button {
+ margin: 32rpx 32rpx 68rpx 32rpx;
+ height: 88rpx;
+ /*width: 668rpx;*/
+ // width: 334rpx;
+ border: none;
+ border-radius: 8rpx;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue b/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue
new file mode 100644
index 0000000..3f94b84
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingDetails1/warehousingDetails1.vue
@@ -0,0 +1,346 @@
+<template>
+ <view class="content">
+ <view class="order-message">
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!--<text>鍏ュ簱鍗曞彿锛�</text>-->
+ <text>{{ data.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <text class="warning" v-if="data.status === 0">寰呭叆搴�</text>
+ <text class="green" v-else-if="data.status === 1">宸插叆搴�</text>
+ <text class="info" v-else-if="data.status === 2">宸插彇娑�</text>
+ </view>
+ </view>
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="data.billType">
+ {{ orderTyepToStr(data.billType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍏ュ簱浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.warehouseCode + ' | ' + data.warehouseName }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鍏ュ簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.planDate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr" v-if="data.originType">
+ {{ tyepToStr(data.originType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ data.originCode ? data.originCode : '-' }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- 杞簱鐗╂枡 -->
+ <view class="title">
+ <text class="title-prefix"></text>
+ <text>鍏ュ嚭搴撶墿鏂�</text>
+ </view>
+ <view class="material-content">
+ <view class="item-style" v-for="(item, index) in materailArray" :key="index">
+ <view class="item-title-style">
+ <text style="font-weight: 500;">{{ item.materialName + ' | ' + item.materialCode}}</text>
+ </view>
+ <view class="item-content-style">
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鎵规鍙凤細</text>
+ <text class="content_list_item_content_item_nr">{{ item.batch || '-' }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鏁伴噺锛�</text>
+ <text class="content_list_item_content_item_nr">{{ item.doneNum + item.unitName }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">宸ュ簭锛�</text>
+ <text class="content_list_item_content_item_nr">{{ item.procedureName || '-' }}</text>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璐ㄩ噺锛�</view>
+ <view class="content_list_item_content_item_nr">
+ <text v-if="item.qualityType == 0" class="green">鍚堟牸</text>
+ <text v-else-if="item.qualityType == 1" class="yellow">涓嶈壇</text>
+ <text v-else-if="item.qualityType == 2" class="red">鎶ュ簾</text>
+ <text v-else>-</text>
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <text class="content_list_item_content_item_label">鍏ュ簱璐т綅锛�</text>
+ <text class="content_list_item_content_item_nr">{{ item.locationName ? item.locationName : '-' }}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view v-if="data.status === 0" style="height:94rpx"></view>
+ <view v-if="data.status === 0" class="bottom-button">
+ <button class="button button-cancel" @click="submit">鍘诲叆搴�</button>
+ <!-- <button class="button button-cancel" @click="cancel">鍙栨秷</button> -->
+ </view>
+ </view>
+</template>
+
+<script>
+ import {
+ orderTyepToStr
+ } from '@/util/constData.js'
+ export default {
+ data() {
+ return {
+ types: [{
+ name: '鍏ㄩ儴',
+ id: '',
+ isActive: true
+ },
+ {
+ name: '閲囪喘璁㈠崟',
+ id: '0',
+ isActive: false
+ },
+ {
+ name: '鐢熶骇宸ュ崟',
+ id: '1',
+ isActive: false
+ },
+ {
+ name: '閿�鍞鍗�',
+ id: '2',
+ isActive: false
+ },
+ {
+ name: '杞簱鍗�',
+ id: '3',
+ isActive: false
+ },
+ {
+ name: '鐩樼偣鍗�',
+ id: '4',
+ isActive: false
+ },
+ ],
+ data: {},
+ materailArray: []
+ };
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.types) {
+ if (parseInt(item.id) === this.type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ submit() {
+
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content {
+ background: white;
+
+ .order-message {
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+
+ // border-bottom: 1rpx solid #ececec;
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+
+ // align-items: center;
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item:first-child {
+ margin-top: 0;
+ }
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+
+ .title {
+ background-color: #f7f7f7;
+ padding: 30rpx;
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+
+ .title-prefix {
+ display: inline-block;
+ background-color: #4275FC;
+ height: 30rpx;
+ width: 8rpx;
+ border-radius: 1rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .material-content {
+ padding: 30rpx;
+
+ .item-style {
+ width: initial;
+ border-bottom: 1rpx solid #ececec;
+ margin-top: 30rpx;
+
+ &:first-child {
+ margin-top: 0 !important;
+ }
+
+ &:last-child {
+ border: none;
+ }
+
+ .item-title-style {
+ margin-bottom: 12rpx;
+ font-size: 30rpx;
+ }
+
+ .item-content-style {
+ // padding: 24rpx 30rpx;
+ // background-color: #f7f7f7;
+ // border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ padding-bottom: 30rpx;
+ justify-content: space-between;
+
+ &:last-child {
+ padding-bottom: 0;
+ }
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .bottom-button {
+ padding: 1rpx;
+ background-color: #f7f7f7;
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ height: 188rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .button-action {
+ background: #fff;
+ color: $nav-color;
+ }
+
+ .button-cancel {
+ background: $nav-color;
+ color: #FFFFFF;
+ }
+
+ .button {
+ margin: 32rpx 32rpx 68rpx 32rpx;
+ height: 88rpx;
+ /*width: 668rpx;*/
+ // width: 334rpx;
+ border: none;
+ border-radius: 8rpx;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue b/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue
new file mode 100644
index 0000000..0649278
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/warehousingList/warehousingList.vue
@@ -0,0 +1,562 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
+ placeholder="鎼滅储鍏ュ簱鍗曞彿/鍏ュ簱浠撳簱">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">璁″垝鏃ユ湡</view>
+ <view class="Search_item_content" @click="openDate">
+ <view class="Search_item_content_a" :style="listData.startDate ? 'color: #000' : ''">
+ {{ listData.startDate ? listData.startDate : '寮�濮嬫棩鏈�'}}</view>
+ <text>-</text>
+ <view class="Search_item_content_a" :style="listData.endDate ? 'color: #000' : ''">
+ {{ listData.endDate ? listData.endDate : '缁撴潫鏃ユ湡'}}</view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">鍗曟嵁绫诲瀷</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in types"
+ :key="item.id" @click="changeTags(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ </template>
+ </Search>
+ <view class="content_search_x"></view>
+ <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" />
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="(item, i) in lists" :key="i" @click="jump(item)">
+ <!-- item澶撮儴瑙嗗浘 -->
+ <view class="content_list_item_top">
+ <view class="content_list_item_top_left">
+ <!-- <text>杞簱鍗曞彿锛�</text>-->
+ <text>{{ item.code }}</text>
+ </view>
+ <view class="content_list_item_top_right">
+ <span class="warning" v-if="item.status == 0">寰呭叆搴�</span>
+ <span class="green" v-else-if="item.status == 1">宸插叆搴�</span>
+ <span class="info" v-else-if="item.status == 2">宸插彇娑�</span>
+ </view>
+ </view>
+ <!-- item涓婚淇℃伅閮ㄥ垎 -->
+ <view class="content_list_item_content">
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍗曟嵁绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ orderTyepToStr(item.billType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鍏ュ簱浠撳簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.warehouseName + ' | ' + item.warehouseCode }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">璁″垝鍏ュ簱锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.planDate }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮绫诲瀷锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ tyepToStr(item.originType) }}
+ </view>
+ </view>
+ <view class="content_list_item_content_item">
+ <view class="content_list_item_content_item_label">鏉ユ簮鍗曞彿锛�</view>
+ <view class="content_list_item_content_item_nr">
+ {{ item.originCode ? item.originCode : '-' }}
+ </view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ import LabelSelection from '@/components/LabelSelection.vue'
+ import { orderTyepToStr } from '@/util/constData.js'
+ export default {
+ components: {
+ Search,
+ LabelSelection
+ },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ planDateEnd: "",
+ planDateStart: "",
+ code: "",
+ originType: "",
+ status: ""
+ },
+ types: [
+ { name: '杞﹂棿棰嗘枡', id: '1', isActive: false },
+ { name: '鏈哄彴澶囨枡', id: '2', isActive: false },
+ { name: '杞﹂棿杞簱', id: '3', isActive: false },
+ { name: '瀹屽伐鍏ュ簱', id: '4', isActive: false },
+ { name: '璁″垝棰嗘枡', id: '5', isActive: false },
+ { name: '澶栧崗棰嗘枡', id: '6', isActive: false },
+ { name: '澶栧崗瀹屽伐杞簱', id: '7', isActive: false },
+ { name: '浜у搧鍏ュ簱', id: '8', isActive: false },
+ { name: '浜у搧杞簱', id: '9', isActive: false },
+ { name: '璁╂鏀捐鍏ュ簱', id: '10', isActive: false },
+ { name: '璁╂鏀捐杞簱', id: '11', isActive: false },
+ { name: '瀹㈣繑杩斾慨棰嗘枡', id: '12', isActive: false },
+ { name: '瀹㈣繑杩斾慨鍏ュ簱', id: '13', isActive: false },
+ { name: '璺ㄧ粍缁囪浆搴�', id: '14', isActive: false },
+ { name: '宸ュ簭鎶ュ簾', id: '15', isActive: false },
+ { name: '瀹㈤��杩斾慨棰嗘枡', id: '16', isActive: false },
+ { name: '瀹㈤��杩斾慨鍏ュ簱', id: '17', isActive: false },
+ { name: '閿�鍞嚭搴�', id: '18', isActive: false },
+ { name: '璁╂閿�鍞�', id: '19', isActive: false },
+ { name: '宸ュ崟鎶曟枡', id: '20', isActive: false },
+ { name: '浠撳簱鎶ュ簾', id: '21', isActive: false },
+ { name: '瀹㈤��妫�楠岄鏂�', id: '22', isActive: false },
+ { name: '瀹㈣繑妫�楠岄鏂�', id: '23', isActive: false },
+ { name: '搴撳瓨璋冩暣', id: '28', isActive: false },
+ { name: '搴熷搧鍏ュ簱', id: '30', isActive: false }
+ ],
+ tagList: [
+ {
+ id: "",
+ name: "鍏ㄩ儴",
+ num: '0',
+ },
+ {
+ id: "0",
+ name: "寰呭嚭搴�",
+ num: '0',
+ },
+ {
+ id: "1",
+ name: "宸插嚭搴�",
+ num: "0",
+ },
+ {
+ id: "2",
+ name: "宸插彇娑�",
+ num: "0",
+ }
+ ],
+ data: [], // 宸ュ簭鏁版嵁
+ factoryList: [],
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: []
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ tyepToStr(type) {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of this.orderType) {
+ if (item.id == type) {
+ return item.name
+ }
+ }
+ return '-'
+ },
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/planDetails/planDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => {
+ item.isActive = false
+ })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [{
+ direction: 'ASC',
+ property: 'publishDate'
+ }]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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;
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #ececec;
+ background: white;
+
+ .content_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .content_list_item_top_left {
+ display: flex;
+ align-items: center;
+
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+
+ .content_list_item_top_right {
+ font-size: 26rpx;
+ font-weight: 400;
+
+ .created {
+ color: $nav-stateColor1 !important;
+ }
+
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+
+ .info {
+ color: $nav-stateColor3 !important;
+ }
+ }
+ }
+
+ .content_list_item_content {
+ padding: 24rpx 30rpx;
+ background: #f7f7f7;
+ border-radius: 16rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 32rpx;
+
+ .content_list_item_content_item {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ // &:nth-child(1) {
+ // margin-top: 0 !important;
+ // }
+ // &:nth-child(2) {
+ // margin-top: 0 !important;
+ // }
+ .content_list_item_content_item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+
+ .content_list_item_content_item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .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/workOrderReporting/workOrderReporting.vue b/minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
new file mode 100644
index 0000000..85ca4fc
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
@@ -0,0 +1,996 @@
+<template>
+ <view>
+ <view class="tips-label">褰撳墠浠诲姟闇�瑕佽川妫�锛涗骇鍑哄悗锛岃鑰愬績绛夊緟璐ㄦ鍛樻楠岋紝骞舵牴鎹楠岀粨鏋滆皟鏁翠骇鍑烘暟鎹悗鍐嶆姤宸ャ��</view>
+ <workOrderInfo :orederMessage="{proUserList:[]}" />
+ <!-- <u-tabs :list="tab" lineColor="#305ED5" :activeStyle="{color:'#305ED5'}" lineWidth="50%" :itemStyle="{width: '50%', boxSizing: 'border-box', height: '88rpx'}" @click="click"></u-tabs> -->
+ <view class="bg_cate">
+ <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
+ v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
+ </view>
+ <div class="bg_list" v-if="typeView === 0">
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>鎶曟枡鏄庣粏</span>
+ </div>
+ <div class="bg_list_item_top_right" @click="jumpTL">
+ <!-- v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)" -->
+ <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> -->
+ <!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
+ <image src="../../static/gongdan_ic_shoudong@2x.png" class="img28" mode=""></image>
+ <span class="cm">鎵嬪姩褰曞叆</span>
+ </div>
+ </div>
+
+ <template v-if="feedingData && feedingData.length > 0">
+ <u-swipe-action>
+ <u-swipe-action-item v-for="(item, index) in feedingData" :key="index" :options="options"
+ @click="deleItem(item.id, 'T')">
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <!-- <span>{{item.code}}</span> -->
+ <div class="bg_list_item_num_item_wl">
+ <span> {{ item.materialName || '澧欎綋鐮�' }}{{ item.procedureName ? ` | ${item.procedureName}` : ''
+ }}</span>
+ <div class="bg_list_item_num_item_wl_lx">
+ <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span>
+ <span class="orange" v-if="item.qualityType == 1">涓嶈壇 / </span>
+ <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span>
+ <span>{{ item.locationName }}</span>
+ <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span>
+ </div>
+ </div>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderinput:update')" -->
+ <input v-model="item.num"
+ @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)"
+ type="number" />
+ <span>{{ item.unitName }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </u-swipe-action-item>
+ </u-swipe-action>
+
+ </template>
+ <template v-else>
+ <div class="kong">
+ <span>鏆傛棤鏁版嵁</span>
+ </div>
+ </template>
+ </div>
+ <div class="bg_list_item">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>浜у嚭鏄庣粏</span>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>鑹搧鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.qualified"
+ @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)"
+ placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <div class="bg_list_item_num_item">
+ <span>涓嶈壇鏁皗{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
+ <div class="bg_list_item_num_item_sr">
+ <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
+ <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
+ <input type="number" v-model="produceFrom.undesirable"
+ @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)"
+ placeholder="璇疯緭鍏�" />
+ <span v-if="info.umodel">{{ info.umodel.name }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_h" v-if="produceFrom.undesirable > 0">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item" @click="badShow = true">
+ <span>涓嶈壇椤�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="wulll" :style="{ color: form.defectiveName ? '#305ED5' : '' }">{{ form.defectiveName ?
+ form.defectiveName : '璁剧疆' }}</span>
+ <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_plan" @click="TimeShow = true">
+ <div class="bg_plan_label">
+ <span>鎶ュ伐鏃堕暱</span>
+ </div>
+ <div class="bg_plan_label_val">
+ <span
+ :style="{ color: form.durationName ? '#333' : '' }">{{ form.durationName ? form.durationName : '璇烽�夋嫨' }}</span>
+ <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
+ </div>
+ </div>
+ <div class="bg_list_item" v-if="arrType && arrType.length > 0">
+ <div class="bg_list_item_top">
+ <div class="bg_list_item_top_left">
+ <div class="bg_list_item_top_left_x bg_m"></div>
+ <span>宸ヨ祫缁╂晥</span>
+ </div>
+ </div>
+ <div class="bg_list_item_h">
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>璁′欢鏂瑰紡</span>
+ <div class="bg_list_item_num_item_list">
+ <div :class="form.index == index ? '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(item, index)">
+ {{ item.name }}
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>宸ヨ祫鍗曚环</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ (arrType[form.index].salary / 10 / 10).toFixed(2) }}鍏�/{{ arrType[form.index].type ==
+ 0 ? '浠�' : '鏃�' }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>棰勮宸ヨ祫</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ expectedSalary }}鍏�</span>
+ </div>
+ </div>
+ </div>
+ <div class="bg_list_item_num">
+ <div class="bg_list_item_num_item">
+ <span>杈炬爣鐜�</span>
+ <div class="bg_list_item_num_item_sr">
+ <span class="color1">{{ complianceRate }}%</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div class="details_dj" v-if="typeView === 1">
+
+ <div class="details_dj_list">
+ <u-swipe-action>
+ <u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
+ @click="dele(item.id)">
+ <div class="details_dj_list_item">
+ <span>{{ item.attrName }}锛歿{ item.val }}</span>
+ <span>{{ item.userName }} {{ item.createTime }}</span>
+ </div>
+ </u-swipe-action-item>
+ </u-swipe-action>
+ </div>
+ </div>
+ <!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
+ <template>
+ <div class="bh_zw"></div>
+ <div class="bg_footer bg_f7">
+ <div class="bg_footer_submit bg_m" v-if="typeView == 0" @click="submit">纭鎶ュ伐</div>
+ <!-- proxy.$auth('h5:workorder:processRecord') && -->
+ <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
+ <image src="../../../static/gongdan_ic_shoudong@2x.png" class="fornt-img" mode=""></image>
+ <span>鏂板鐐规</span>
+ </div>
+ </div>
+ </template>
+ <u-datetime-picker :show="TimeShow" @cancel="TimeShow=false" @confirm="timeConfirm" v-model="form.time"
+ mode="time"></u-datetime-picker>
+ <u-popup :show="badShow" @close="badShow=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 :key="index" :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="confirm">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import workOrderInfo from '@/components/workOrderInfo.vue'
+ export default {
+ components: {
+ workOrderInfo
+ },
+ data() {
+ return {
+ cate: [{
+ name: '鐢熶骇'
+ },
+ {
+ name: '鐐规'
+ }
+ ],
+ form: {
+ time: '',
+ efective: [],
+ defectiveName: '',
+ durationName: '0灏忔椂0鍒嗛挓',
+ duration: 0,
+ type: 0,
+ index: 0
+ },
+ TimeShow: false,
+ badShow: false,
+ typeView: 0,
+ feedingData: [{
+ id: 0,
+ materialName: '澧欎綋鐮�',
+ procedureName: '鍘嬪埗',
+ qualityType: 1,
+ locationName: 'CP-01',
+ batch: '20230713',
+ num: 2,
+ maxNum: 10,
+ unitAttribute: 1,
+ unitName: '鍧�'
+ }],
+ options: [{
+ text: '鍒犻櫎',
+ style: {
+ backgroundColor: 'red',
+ }
+ }],
+ arrType: [{
+ name: '璁℃椂',
+ type: 1,
+ salary: 1000,
+ },
+ {
+ name: '璁′欢',
+ type: 0,
+ salary: 100
+ },
+ ],
+ // 浜у嚭鍚堟牸/涓嶈壇
+ produceFrom: {
+ qualifiedId: '',
+ qualified: '', // 鍚堟牸
+ undesirableId: '',
+ undesirable: 5 // 涓嶈壇
+ },
+ djData: [{
+ attrName: '鍑烘按鏃堕棿',
+ val: '2022-05-28 16:3',
+ userName: '寮犱笁 ',
+ createTime: '2022-05-28 16:32:'
+ }],
+ cateList: [{
+ active: false,
+ name: '姣涘埡',
+ num: 0
+ }]
+ };
+ },
+ computed: {
+ expectedSalary() {
+ if (this.arrType.length === 0) return 0;
+ // 鎸変欢璁$畻
+ if (this.arrType[this.form.index].type == 0) {
+ if (!this.produceFrom.qualified) return 0
+ if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
+ return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
+ } else {
+ return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
+ 2) || 0
+ }
+ } else {
+ if (!this.form.duration) return 0;
+ let h = (this.form.duration / 60 / 60).toFixed(2)
+ return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
+ }
+ },
+ complianceRate() {
+ if (this.arrType.length === 0) return 0;
+ if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
+ if (!this.form.duration) return 0;
+ if (!this.arrType[this.form.index].num) return 0;
+ // 鎸変欢璁$畻
+ // if (infoBox.value.type == 0) {
+ if (this.arrType[this.form.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
+ .duration / 3600)).toFixed(2)
+ let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
+ // return total * infoBox.value.salary;
+ } else {
+ let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
+ let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ // return Number(from.qualified) * infoBox.value.salary;
+ }
+ }
+ },
+ methods: {
+ click() {
+
+ },
+ clickIten(index) {
+ this.typeView = index
+ },
+ timeConfirm({
+ value
+ }) {
+ console.log(value)
+ let h = Number(value.substring(0, 2))
+ let m = Number(value.substring(3, 5))
+ let s = 0
+ if (h > 0) {
+ s += h * 60 * 60
+ }
+ if (m > 0) {
+ s += m * 60
+ }
+ this.form.duration = s
+ this.form.durationName = `${h}灏忔椂${m}鍒嗛挓`
+ this.TimeShow = false
+ },
+ // 缂栬緫鎶曟枡/浜у嚭
+ change(id, num, type, maxNum, item, unitAttribute) {
+ let obj = item
+ if (type === 'T') {
+ if (unitAttribute == 0 && num != '') {
+ if (!REGULAR.positiveInteger.test(num)) {
+ obj.num = obj.ynum
+ Toast({
+ message: '鍙兘杈撳叆姝f暣鏁�'
+ })
+ return
+ }
+ }
+ if (unitAttribute == 1 && num != '') {
+ if (!REGULAR.number.test(num)) {
+ Toast({
+ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級'
+ })
+ obj.num = obj.ynum
+ return
+ }
+ }
+ if (num > maxNum) {
+ obj.num = obj.ynum
+ Toast.fail({
+ message: '瓒呭嚭宸ヨ鎬绘暟'
+ })
+ return
+ }
+ } else if (type === 'C' && num > info.value.planNum) {
+ obj.num = obj.ynum
+ Toast.fail({
+ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺'
+ })
+ return
+ }
+ // updateById({ id, num }).then(res => {
+ // if (res.code === 200 && type === 'T') {
+ // getOrocessRecords()
+ // } else if (res.code === 200 && type === 'C') {
+ // // getOrocessRecordCC()
+ // }
+ // })
+ },
+ clickPerformanceType(item, index) {
+ this.form.index = index
+ this.form.type = item.type
+ },
+ submit() {},
+ jumpdj() {},
+ pageDJs() {},
+ dele(id) {
+ // deletedj(id)
+ // .then(res => {
+ // if (res.code === 200) {
+ // djData.value = []
+ // finished.value = false
+ // page.page = 1
+ // djData.value = []
+ // pageDJs()
+ // }
+ // })
+ },
+ confirm() {
+ // console.log('confirm');
+ this.badShow = false
+ },
+ changeChecked(i) {
+ this.cateList[i].active = !this.cateList[i].active
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .bg_cate {
+ width: 100%;
+ height: 88rpx;
+ background: #FFFFFF;
+ display: flex;
+ align-items: center;
+
+ .active {
+ box-sizing: border-box;
+ color: #305ED5 !important;
+ font-weight: 500;
+ border-bottom: 3rpx solid #305ED5;
+ }
+
+ .bg_cate_item {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #555555;
+ }
+ }
+
+ .bg_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-top: 30rpx;
+
+ .bg_list_item {
+ display: flex;
+ flex-direction: column;
+ // margin-bottom: 40rpx;
+ border-bottom: 40rpx #f7f7f7 solid;
+
+ .kong {
+ text-align: center;
+ padding: 30rpx 0;
+ background: #ffffff;
+ font-size: 25rpx;
+
+ span {
+ 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;
+ }
+
+ span {
+ 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;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ }
+ }
+ }
+
+ .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;
+ font-size: 34rpx;
+ color: #222222;
+
+ .bg_list_item_num_item_wl_lx {
+ margin-top: 10rpx;
+ color: #222222;
+ font-size: 28rpx;
+ }
+ }
+
+ // .warning {
+ // color: $nav-stateColor5 !important;
+ // }
+
+ // .err {
+ // color: $nav-stateColor4 !important;
+ // }
+
+ img {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+
+ span {
+ 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;
+ }
+
+ span {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .bg_plan {
+ width: 100%;
+ // height: 98px;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ 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;
+
+ span {
+ 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;
+
+ span {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+
+
+ }
+ }
+
+ .img_ar {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+
+ .bh_zw {
+ height: 160rpx;
+ }
+
+ .bg_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 30rpx 30rpx 60rpx 30rpx;
+ box-sizing: border-box;
+
+ .bg_footer_submit1 {
+ width: 690rpx;
+ height: 76rpx;
+ background: #FFFFFF;
+ border-radius: 36rpx;
+ border: 1rpx solid #E5E5E5;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .fornt-img {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+
+ span {
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #305ED5;
+ }
+ }
+
+ .bg_footer_submit {
+ width: 690rpx;
+ height: 88rpx;
+ 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;
+ }
+ }
+
+ .details_dj {
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_list {
+ width: 100%;
+ box-sizing: border-box;
+ background: #ffffff;
+ display: flex;
+ flex-direction: column;
+
+ .details_dj_list_item {
+ display: flex;
+ flex-direction: column;
+ border-bottom: 1rpx solid #E5E5E5;
+ padding: 30rpx;
+ line-height: 42rpx;
+
+ span {
+ &:nth-child(1) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+
+ .details_dj_title {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx 30rpx;
+ box-sizing: border-box;
+
+ .details_dj_title_left {
+ display: flex;
+ align-items: center;
+
+ span {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ }
+ }
+
+ .contanir {
+ height: calc(env(safe-area-inset-bottom) + 720rpx);
+
+ .content {
+ margin-top: 20rpx;
+
+ .type-style {
+ width: 325rpx;
+ margin-bottom: 20rpx;
+ }
+ }
+ }
+
+ .bottom-view {
+ left: 40rpx;
+ right: 40rpx;
+ bottom: 0
+ }
+
+ .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;
+ }
+
+ span {
+ 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/pages_adjust/static/gongdan_ic_shoudong@2x.png b/minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png
new file mode 100644
index 0000000..c4f8fb8
--- /dev/null
+++ b/minipro_standard/pages_adjust/static/gongdan_ic_shoudong@2x.png
Binary files differ
diff --git a/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue b/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue
new file mode 100644
index 0000000..4518724
--- /dev/null
+++ b/minipro_standard/pages_inspect/pages/InspectionDetails/InspectionDetails.vue
@@ -0,0 +1,249 @@
+<template>
+ <view class="page">
+ <view class="page_info">
+ <view class="page_info_title">{{info.code}}</view>
+ <view class="page_info_nr">
+ <view class="item">
+ <view class="item_label">鐗╂枡淇℃伅锛�</view>
+ <view class="item_nr" v-if="info.mmodel">{{info.mmodel.name}}涓▄{info.mmodel.code}}</view>
+ </view>
+ <view class="items" style="margin-top: 0">
+ <view class="item_label">鐢熶骇鏁伴噺锛�</view>
+ <view class="item_nr" v-if="info.umodel">{{info.num}}{{info.umodel.name}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">鐢熶骇鎵规锛�</view>
+ <view class="item_nr">{{info.batch}}</view>
+ </view>
+ <view class="items">
+ <view class="item_label">鐢熶骇宸ュ簭锛�</view>
+ <view class="item_nr" v-if="info.pmodel">{{info.pmodel.name}}</view>
+ </view>
+ <view class="item">
+ <view class="item_label">宸ュ崟缂栧彿锛�</view>
+ <view class="item_nr">{{info.workorderCode}}</view>
+ </view>
+<!-- <view class="items">-->
+<!-- <view class="item_label">鐢熶骇浜哄憳锛�</view>-->
+<!-- <view class="item_nr">{{info.proUserids}}</view>-->
+<!-- </view>-->
+ <view class="items">
+ <view class="item_label">鐢熶骇璁惧锛�</view>
+ <view class="item_nr" v-if="info.devmodel">{{info.devmodel.name}}</view>
+ </view>
+ <!-- <view class="items">
+ <view class="item_label">宸ヨ鐮侊細</view>
+ <view class="item_nr" v-if="info.amodel">{{info.amodel.code}}</view>
+ </view> -->
+ </view>
+ </view>
+ <view class="page_title">妫�楠屼俊鎭�</view>
+ <view class="page_info1">
+ <view class="page_info1_item" style="margin: 0;">
+ <view class="label">妫�楠屼汉鍛橈細</view>
+ <view class="nr">{{info.smodelRealName}}/{{info.checkUserDepartName}}</view>
+ </view>
+ <view class="page_info1_items">
+ <view class="label">妫�楠屾棩鏈燂細</view>
+ <view class="nr">{{info.checkDate}}</view>
+ </view>
+ <view class="page_info1_item">
+ <view class="label">鍚堟牸鏁伴噺锛�</view>
+ <view class="nr" v-if="info.umodel">{{info.qualifiedNum}}{{info.umodel.name}}</view>
+ </view>
+ <view class="page_info1_items">
+ <view class="label">涓嶈壇鏁伴噺锛�</view>
+ <view class="nr" v-if="info.umodel">{{info.unqualifiedNum}}{{info.umodel.name}}</view>
+ </view>
+ </view>
+ <view class="page_err" v-if="info.checkInfo">
+ <!-- <view class="page_err_item">
+ <text>宸ヨ {{info.qualifiedApplianceCode}}</text>
+ <text v-if="info.umodel">{{info.unqualifiedNum}}{{info.umodel.name}}</text>
+ </view> -->
+ <view class="page_err_items">
+ <text>涓嶈壇鍘熷洜锛�</text>
+ <text>{{info.checkInfo}}</text>
+ </view>
+ </view>
+ <view class="page_footer" v-if="info.createUser === $store.state.userInfo.id && info.workorderstatus !== 4 && info.workorderstatus !== 2">
+ <view class="page_footer_dele red" @click="dele">鍒犻櫎</view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ info: {}
+ };
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+.page {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: #F7F7F7;
+ .page_info {
+ padding: 30rpx;
+ background: #ffffff;
+ .page_info_title {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #333333;
+ }
+ .page_info_nr {
+ padding: 0 30rpx 30rpx 30rpx;
+ margin-top: 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .items {
+ width: 45%;
+ display: flex;
+ margin-top: 24rpx;
+ .item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ .item {
+ width: 55%;
+ display: flex;
+ margin-top: 24rpx;
+ .item_label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .item_nr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ .page_title {
+ padding: 40rpx 30rpx 30rpx 30rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .page_info1 {
+ padding: 0 30rpx 30rpx 30rpx;
+ background: #ffffff;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ margin-bottom: 24rpx;
+ .page_info1_items {
+ display: flex;
+ width: 45%;
+ margin-top: 30rpx;
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ .page_info1_item {
+ display: flex;
+ width: 55%;
+ margin-top: 30rpx;
+ .label {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .nr {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ .page_err {
+ padding: 0 30rpx 30rpx 30rpx;
+ background: #ffffff;
+ .page_err_item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding-top: 30rpx;
+ text {
+ &:nth-child(1) {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #DE5243;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #DE5243;
+ }
+ }
+ }
+ .page_err_items {
+ display: flex;
+ justify-content: space-between;
+ padding-top: 30rpx;
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ .page_footer {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ padding-bottom: 68rpx;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ box-sizing: border-box;
+ .page_footer_dele {
+ width: 100%;
+ height: 88rpx;
+ background: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 30rpx;
+ border-radius: 8rpx;
+ box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.08);
+ }
+ }
+}
+</style>
diff --git a/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue b/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue
new file mode 100644
index 0000000..a2dbb0c
--- /dev/null
+++ b/minipro_standard/pages_inspect/pages/InspectionRecords/InspectionRecords.vue
@@ -0,0 +1,643 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true" placeholder="鎼滅储宸ュ崟缂栫爜/鐗╂枡缂栫爜2">
+ <template v-slot:content>
+ <view class="Search_item">
+ <view class="Search_item_label">妫�楠屾棩鏈�</view>
+ <view class="Search_item_content" @click="timeShow = true">
+ <view class="Search_item_content_a" :style="pageData.checkStartDate ? 'color: #000;' : ''">{{ pageData.checkStartDate ? pageData.checkStartDate : '寮�濮嬫棩鏈�'}}</view>
+ <text>-</text>
+ <view class="Search_item_content_a" :style="pageData.checkEndDate ? 'color: #000;' : ''">{{ pageData.checkEndDate ? pageData.checkEndDate : '缁撴潫鏃ユ湡'}}</view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">妫�楠岀被鍨�</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in data" :key="item.id" @click="changeTag(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">妫�楠屽伐搴�</view>
+ <view class="Search_item_content">
+ <view class="tag">
+ <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in workingProcedure" :key="item.id" @click="changeTag1(i)">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+ <view class="Search_item">
+ <view class="Search_item_label">鎵规鍙�</view>
+ <view class="Search_item_content">
+ <u--input placeholder="璇疯緭鍏ユ壒娆″彿" border="surround" v-model="pageData.batch"></u--input>
+ </view>
+ </view>
+ </template>
+ </Search>
+ </view>
+ <view class="content_total" :style="{top: top}">鍏眥{listData.total}}鏉℃暟鎹�</view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="item in lists" :key="item.id" @click="jump(item)">
+ <view class="content_list_item_title">
+ <text>{{item.code}}</text>
+ <text class="warning" v-if="item.checkType === 0">宸$嚎</text>
+ <text v-if="item.checkType === 1">宸℃</text>
+ <text class="green" v-if="item.checkType === 2">瀹屽伐妫�</text>
+ </view>
+ <view class="content_list_item_nr">
+ <view class="content_list_item_nr_box">
+ <view class="label">鐗╂枡淇℃伅锛�</view>
+ <view class="cr" v-if="item.mmodel">{{item.mmodel.name}}涓▄{item.mmodel.code}}</view>
+ </view>
+ <view class="content_list_item_nr_boxs">
+ <view class="label">鐢熶骇鏁伴噺锛�</view>
+ <view class="cr" v-if="item.umodel">{{item.num}}{{item.umodel.name}}</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_boxs">
+ <view class="label">鐢熶骇宸ュ簭锛�</view>
+ <view class="cr" v-if="item.pmodel">{{item.pmodel.name}}</view>
+ </view>
+ <view class="content_list_item_nr_box">
+ <view class="label">宸ュ崟缂栧彿锛�</view>
+ <view class="cr">{{item.workorderCode}}</view>
+ </view>
+ <view class="content_list_item_nr_boxs">
+ <view class="label">妫�楠屼汉鍛橈細</view>
+ <view class="cr">{{item.smodelRealName}}/{{item.checkUserDepartName}}</view>
+ </view>
+ <!-- <view class="content_list_item_nr_box">
+ <view class="label">妫�楠屾棩鏈燂細</view>
+ <view class="cr">{{item.checkDate}}</view>
+ </view> -->
+ <!-- <view class="content_list_item_nr_boxs">
+ <view class="label">宸ヨ鐮侊細</view>
+ <view class="cr" v-if="item.amodel">{{item.amodel.code}}</view>
+ </view> -->
+ <view class="content_list_item_nr_box">
+ <view class="label">鍚堟牸鏁伴噺锛�</view>
+ <view class="cr" v-if="item.umodel">{{item.qualifiedNum}}{{item.umodel.name}}</view>
+ </view>
+ <view class="content_list_item_nr_boxs">
+ <view class="label">涓嶈壇鏁伴噺锛�</view>
+ <view class="cr warning" v-if="item.umodel">{{item.unqualifiedNum}}{{item.umodel.name}}</view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- 閫夋嫨鏃ユ湡 -->
+ <u-calendar :show="timeShow" mode="range" @confirm="timeConfirm"></u-calendar>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ export default {
+ components: { Search },
+ data() {
+ return {
+ height: '',
+ top: '',
+ listData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ startDate: '',
+ endDate: '',
+ procedureIds: [],
+ departIds: '',
+ mixParam: '',
+ cateIds: []
+ },
+ data: [ // 妫�楠岀被鍨�
+ { id: '0', name: '宸$嚎', isActive: false },
+ { id: '1', name: '宸℃', isActive: false },
+ { id: '2', name: '瀹屽伐妫�', isActive: false }
+ ],
+ workingProcedure: [], // 宸ュ簭
+ finished: true,
+ loading: false,
+ refreshing: false,
+ timeShow: false,
+ lists: [
+ {
+ id: 1,
+ checkType: 0,
+ status: 0,
+ code: '1234543223',
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 2,
+ checkType: 1,
+ code: '1234543223',
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ id: 3,
+ checkType: 2,
+ code: '1234543223',
+ status: 0,
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ checkType: 2,
+ id: 4,
+ status: 0,
+ urgent: 1,
+ code: '1234543223',
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ },
+ {
+ checkType: 1,
+ id: 5,
+ status: 0,
+ code: '1234543223',
+ urgent: 1,
+ num: 100,
+ batch: '11111',
+ planDate: '2023-08-29',
+ mmodel: {
+ name: '宸ュ簭璁″垝',
+ code: 'fbdseasafghb'
+ },
+ usermodel: {
+ realname: '璁″垝浜哄憳'
+ },
+ pmodel: {
+ name: '宸ュ簭璁″垝'
+ },
+ fmodel: {
+ name: '宸ュ巶'
+ }
+ }
+ ]
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height + 80}px)`
+ that.top = `${rect.height}px`
+ }).exec()
+ })
+ },
+ methods: {
+ // 璺宠浆
+ jump(item) {
+ uni.navigateTo({
+ url: `/pages/InspectionDetails/InspectionDetails?id=${item.id}`
+ })
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 閲嶇疆
+ reset() {
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.listData.mixParam = ''
+ this.listData.startDate = ''
+ this.listData.endDate = ''
+ this.listData.procedureIds = []
+ if (this.factoryList.length > 0) {
+ this.listData.departIds = this.factoryList[0].id
+ }
+ if (this.data.length > 0) {
+ this.data.forEach(item => { item.isActive = false })
+ }
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鏃ユ湡纭畾
+ timeConfirm(val) {
+ this.listData.startDate = val[0]
+ this.listData.endDate = val[val.length - 1]
+ this.timeShow = false
+ },
+ // 鍒囨崲宸ュ巶
+ changeTags(i, id) {
+ this.listData.departIds = id
+ this.getWorkingProcedures(id)
+ this.factoryList.forEach((item, index) => {
+ if (index === i) {
+ item.isActive = true
+ } else {
+ item.isActive = false
+ }
+ })
+ },
+ // 鎵撳紑鏃ユ湡鎻掍欢
+ openDate() {
+ this.timeShow = true
+ },
+ // 鎼滅储
+ 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.loading = true
+ this.listData.page = this.listData.page++
+ getList({
+ capacity: this.listData.capacity,
+ model: {
+ mixParam: this.listData.mixParam,
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ factoryId: this.listData.departIds,
+ statusList: this.listData.cateIds
+ },
+ page: this.listData.page,
+ sorts: [
+ {
+ direction: 'ASC',
+ property: 'publishDate'
+ }
+ ]
+ }).then(res => {
+ this.loading = false
+ this.listData.total = res.data.total
+ if (this.refreshing) {
+ this.lists = []
+ this.refreshing = false;
+ }
+ if (res.code === 200 && res.data.records.length !== 0) {
+ if (this.lists.length === 0) {
+ this.lists = res.data.records
+ } else {
+ this.lists.push(...res.data.records)
+ }
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.lists = []
+ 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;
+ input {
+ width: 100%;
+ height: 70rpx;
+ border-radius: 10rpx;
+ padding: 0 20rpx;
+ box-sizing: border-box;
+ border: 1rpx solid #939393;
+ color: black;
+ font-size: 26rpx;
+ }
+ input::-webkit-input-placeholder {
+ color: #999999;
+ font-size: 26rpx;
+ }
+ input:-moz-placeholder {
+ color: #999999;
+ font-size: 26rpx;
+ }
+ input::-moz-placeholder {
+ color: #999999;
+ font-size: 26rpx;
+ }
+ input:-ms-input-placeholder {
+ color: #999999;
+ font-size: 26rpx;
+ }
+ .tag {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ .tag_active {
+ background: $nav-color !important;
+ color: #ffffff !important;
+ }
+ .tag_item {
+ width: 156rpx;
+ height: 70rpx;
+ 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;
+ &:nth-child(4n) {
+ margin-right: 0;
+ }
+ }
+ }
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ .Search_item_content_a {
+ width: 308rpx;
+ height: 70rpx;
+ 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;
+ .content_list_item_title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .green {
+ color: $nav-stateColor2 !important;
+ }
+ text {
+ font-size: 32rpx;
+ 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: 55%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0;
+ }
+ &:nth-child(2) {
+ 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>
diff --git a/minipro_standard/static/@2x.png b/minipro_standard/static/filter@2x.png
similarity index 100%
rename from minipro_standard/static/@2x.png
rename to minipro_standard/static/filter@2x.png
Binary files differ
diff --git a/minipro_standard/static/ic_edit@2x.png b/minipro_standard/static/ic_edit@2x.png
new file mode 100644
index 0000000..d7048cf
--- /dev/null
+++ b/minipro_standard/static/ic_edit@2x.png
Binary files differ
diff --git a/minipro_standard/store/index.js b/minipro_standard/store/index.js
index 0d677c6..2d5b182 100644
--- a/minipro_standard/store/index.js
+++ b/minipro_standard/store/index.js
@@ -1,6 +1,10 @@
import Vue from 'vue'
-import Vuex from 'vuex'
-import { pageCount } from '@/util/api/index.js'
+import Vuex from 'vuex'
+import {
+ pageCount,
+ getTreeList,
+ getUserInfo
+} from '@/util/api/index.js'
Vue.use(Vuex) // vue鐨勬彃浠舵満鍒�
@@ -8,7 +12,9 @@
const statusbarHeight = uni.getStorageSync('statusbarHeight');
const menuButtonWidth = uni.getStorageSync('menuButtonWidth');
const token = uni.getStorageSync('token');
-const userInfo = uni.getStorageSync('userInfo');
+const userInfo = uni.getStorageSync('userInfo');
+const Menu = uni.getStorageSync('MenuList');
+const session = uni.getStorageSync('session');
// Vuex.Store 鏋勯�犲櫒閫夐」
@@ -16,15 +22,18 @@
// 涓轰簡涓嶅拰椤甸潰鎴栫粍浠剁殑data涓殑閫犳垚娣锋穯锛宻tate涓殑鍙橀噺鍓嶉潰寤鸿鍔犱笂$绗﹀彿
state: {
// 鐢ㄦ埛淇℃伅
- userInfo: userInfo || null,
+ userInfo: userInfo || null,
token: token || null,
menuButtonWidth: menuButtonWidth || '0',
statusbarHeight: statusbarHeight || '0',
- navHeight: navHeight || '0',
- // 寰呭姙鏁伴噺
- upcomingNum: {
- d: 0,
- y: 0
+ navHeight: navHeight || '0',
+ session: session ? session : '',
+ // 鑿滃崟鏉冮檺
+ Menu: Menu ? JSON.parse(Menu) : [],
+ // 寰呭姙鏁伴噺
+ upcomingNum: {
+ d: 0,
+ y: 0
},
},
mutations: {
@@ -36,23 +45,48 @@
uni.setStorageSync('statusbarHeight', val.statusbarHeight);
uni.setStorageSync('menuButtonWidth', val.menuButtonWidth);
},
- SETTOKEN(state, val) {
- state.token = val
- uni.setStorageSync('token', val);
- },
- SETUSERINFO(state, val) {
- state.userInfo = val
- uni.setStorageSync('userInfo', val);
- },
- SETNUM(state, val) {
- state.upcomingNum.d = val.d
- state.upcomingNum.y = val.y
+ SETTOKEN(state, val) {
+ state.token = val
+ uni.setStorageSync('token', val);
+ },
+ SETUSERINFO(state, val) {
+ state.userInfo = val
+ uni.setStorageSync('userInfo', val);
+ },
+ SETNUM(state, val) {
+ state.upcomingNum.d = val.d
+ state.upcomingNum.y = val.y
+ },
+ SETMENU(state, data) {
+ state.Menu = data
+ uni.setStorageSync('MenuList', JSON.stringify(data));
+ },
+ SETSESSION(state, data) {
+ state.session = data;
+ uni.setStorageSync('session', data);
+ },
+ clearCache(state) {
+ state.userInfo = ''
+ state.token = ''
+ state.session = ''
+ state.Menu = []
+ state.upcomingNum.d = 0
+ state.upcomingNum.y = 0
+ uni.clearStorageSync()
}
},
actions: {
+ // 鍚戝悗绔幏鍙栬彍鍗曟爮鏉冮檺
+ async getMenuList(content, type) {
+ let res = await getTreeList({
+ type: type
+ })
+ if (res.code === 200) {
+ content.commit('SETMENU', res.data)
+ }
+ },
// 鑾峰彇鐘舵�侀珮搴�
- getHeight(context) {
-
+ getHeight(context) {
let res = uni.getMenuButtonBoundingClientRect()
let status = uni.getSystemInfoSync()
let menuButtonWidth = res.width
@@ -65,14 +99,25 @@
height,
menuButtonWidth
})
- },
- async getUpcomingNum() {
- let res = await pageCount({})
- if (res.code === 200) {
- content.commit('SETNUM', { d: res.data.startNum, y: res.data.endNum })
- }
- }
+ },
+ async getUpcomingNum() {
+ let res = await pageCount({})
+ if (res.code === 200) {
+ content.commit('SETNUM', {
+ d: res.data.startNum,
+ y: res.data.endNum
+ })
+ }
+ },
+ // 鍚戝悗绔幏鍙栦釜浜轰俊鎭�
+ async getUserInfos(content) {
+ let res = await getUserInfo()
+ if (res.code === 200) {
+ content.commit('SETUSERINFO', res.data)
+ return true;
+ }
+ }
}
})
-export default store
+export default store
\ No newline at end of file
diff --git a/minipro_standard/uni.scss b/minipro_standard/uni.scss
index 98bb242..04138e5 100644
--- a/minipro_standard/uni.scss
+++ b/minipro_standard/uni.scss
@@ -14,6 +14,18 @@
/* 棰滆壊鍙橀噺 */
@import '@/uni_modules/uview-ui/theme.scss';
+
+$nav-color: #4275FC;
+
+// 鍏ㄥ眬鐘舵�佽壊
+$nav-stateColor1: #305ED5;
+$nav-stateColor2: #03AF76;
+$nav-stateColor3: #999999;
+$nav-stateColor4: #de5243;
+$nav-stateColor5: #F5A400;
+$nav-stateColor6: #666666;
+$nav-stateColor7: #03AF76;
+
/* 琛屼负鐩稿叧棰滆壊 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
diff --git a/minipro_standard/uni_modules/uni-collapse/changelog.md b/minipro_standard/uni_modules/uni-collapse/changelog.md
new file mode 100644
index 0000000..292e4c7
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/changelog.md
@@ -0,0 +1,36 @@
+## 1.4.3锛�2022-01-25锛�
+- 淇 鍒濆鍖栫殑鏃跺�� 锛宱pen 灞炴�уけ鏁堢殑bug
+## 1.4.2锛�2022-01-21锛�
+- 淇 寰俊灏忕▼搴弐esize鍚庣粍浠舵敹璧风殑bug
+## 1.4.1锛�2021-11-22锛�
+- 淇 vue3涓釜鍒玸css鍙橀噺鏃犳硶鎵惧埌鐨勯棶棰�
+## 1.4.0锛�2021-11-19锛�
+- 浼樺寲 缁勪欢UI锛屽苟鎻愪緵璁捐璧勬簮锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 鏂囨。杩佺Щ锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+## 1.3.3锛�2021-08-17锛�
+- 浼樺寲 show-arrow 灞炴�ч粯璁や负true
+## 1.3.2锛�2021-08-17锛�
+- 鏂板 show-arrow 灞炴�э紝鎺у埗鏄惁鏄剧ず鍙充晶绠ご
+## 1.3.1锛�2021-07-30锛�
+- 浼樺寲 vue3涓嬪皬绋嬪簭浜嬩欢璀﹀憡鐨勯棶棰�
+## 1.3.0锛�2021-07-30锛�
+- 缁勪欢鍏煎 vue3锛屽浣曞垱寤簐ue3椤圭洰锛岃瑙� [uni-app 椤圭洰鏀寔 vue3 浠嬬粛](https://ask.dcloud.net.cn/article/37834)
+## 1.2.2锛�2021-07-21锛�
+- 淇 鐢�1.2.0鐗堟湰寮曡捣鐨� change 浜嬩欢杩斿洖 undefined 鐨凚ug
+## 1.2.1锛�2021-07-21锛�
+- 浼樺寲 缁勪欢绀轰緥
+## 1.2.0锛�2021-07-21锛�
+- 鏂板 缁勪欢鎶樺彔鍔ㄧ敾
+- 鏂板 value\v-model 灞炴�� 锛屽姩鎬佷慨鏀归潰鏉挎姌鍙犵姸鎬�
+- 鏂板 title 鎻掓Ы 锛屽彲瀹氫箟闈㈡澘鏍囬
+- 鏂板 border 灞炴�� 锛屾樉绀洪殣钘忛潰鏉垮唴瀹瑰垎闅旂嚎
+- 鏂板 title-border 灞炴�� 锛屾樉绀洪殣钘忛潰鏉挎爣棰樺垎闅旂嚎
+- 淇 resize 鏂规硶澶辨晥鐨凚ug
+- 淇 change 浜嬩欢杩斿洖鍙傛暟涓嶆纭殑Bug
+- 浼樺寲 H5銆丄pp 骞冲彴鑷姩鏇村叿鍐呭鏇存柊楂樺害锛屾棤闇�璋冪敤 reszie() 鏂规硶
+## 1.1.7锛�2021-05-12锛�
+- 鏂板 缁勪欢绀轰緥鍦板潃
+## 1.1.6锛�2021-02-05锛�
+- 浼樺寲 缁勪欢寮曠敤鍏崇郴锛岄�氳繃uni_modules寮曠敤缁勪欢
+## 1.1.5锛�2021-02-05锛�
+- 璋冩暣涓簎ni_modules鐩綍瑙勮寖
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..b2aad1f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,402 @@
+<template>
+ <view class="uni-collapse-item">
+ <!-- onClick(!isOpen) -->
+ <view @click="onClick(!isOpen)" class="uni-collapse-item__title"
+ :class="{'is-open':isOpen &&titleBorder === 'auto' ,'uni-collapse-item-border':titleBorder !== 'none'}">
+ <view class="uni-collapse-item__title-wrap">
+ <slot name="title">
+ <view class="uni-collapse-item__title-box" :class="{'is-disabled':disabled}">
+ <image v-if="thumb" :src="thumb" class="uni-collapse-item__title-img" />
+ <text class="uni-collapse-item__title-text">{{ title }}</text>
+ </view>
+ </slot>
+ </view>
+ <view v-if="showArrow"
+ :class="{ 'uni-collapse-item__title-arrow-active': isOpen, 'uni-collapse-item--animation': showAnimation === true }"
+ class="uni-collapse-item__title-arrow">
+ <uni-icons :color="disabled?'#ddd':'#bbb'" size="14" type="bottom" />
+ </view>
+ </view>
+ <view class="uni-collapse-item__wrap" :class="{'is--transition':showAnimation}"
+ :style="{height: (isOpen?height:0) +'px'}">
+ <view :id="elId" ref="collapse--hook" class="uni-collapse-item__wrap-content"
+ :class="{open:isheight,'uni-collapse-item--border':border&&isOpen}">
+ <slot></slot>
+ </view>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ // #ifdef APP-NVUE
+ const dom = weex.requireModule('dom')
+ // #endif
+ /**
+ * CollapseItem 鎶樺彔闈㈡澘瀛愮粍浠�
+ * @description 鎶樺彔闈㈡澘瀛愮粍浠�
+ * @property {String} title 鏍囬鏂囧瓧
+ * @property {String} thumb 鏍囬宸︿晶缂╃暐鍥�
+ * @property {String} name 鍞竴鏍囧織绗�
+ * @property {Boolean} open = [true|false] 鏄惁灞曞紑缁勪欢
+ * @property {Boolean} titleBorder = [true|false] 鏄惁鏄剧ず鏍囬鍒嗛殧绾�
+ * @property {Boolean} border = [true|false] 鏄惁鏄剧ず鍒嗛殧绾�
+ * @property {Boolean} disabled = [true|false] 鏄惁灞曞紑闈㈡澘
+ * @property {Boolean} showAnimation = [true|false] 寮�鍚姩鐢�
+ * @property {Boolean} showArrow = [true|false] 鏄惁鏄剧ず鍙充晶绠ご
+ */
+ export default {
+ name: 'uniCollapseItem',
+ props: {
+ // 鍒楄〃鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ name: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏄惁绂佺敤
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // #ifdef APP-PLUS
+ // 鏄惁鏄剧ず鍔ㄧ敾,app 绔粯璁や笉寮�鍚姩鐢伙紝鍗¢】涓ラ噸
+ showAnimation: {
+ type: Boolean,
+ default: false
+ },
+ // #endif
+ // #ifndef APP-PLUS
+ // 鏄惁鏄剧ず鍔ㄧ敾
+ showAnimation: {
+ type: Boolean,
+ default: true
+ },
+ // #endif
+ // 鏄惁灞曞紑
+ open: {
+ type: Boolean,
+ default: false
+ },
+ // 缂╃暐鍥�
+ thumb: {
+ type: String,
+ default: ''
+ },
+ // 鏍囬鍒嗛殧绾挎樉绀虹被鍨�
+ titleBorder: {
+ type: String,
+ default: 'auto'
+ },
+ border: {
+ type: Boolean,
+ default: true
+ },
+ showArrow: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ // TODO 闅忔満鐢熺敓鍏冪礌ID锛岃В鍐崇櫨搴﹀皬绋嬪簭鑾峰彇鍚屼竴涓厓绱犱綅缃俊鎭殑bug
+ const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+ return {
+ isOpen: false,
+ isheight: null,
+ height: 0,
+ elId,
+ nameSync: 0
+ }
+ },
+ watch: {
+ open(val) {
+ this.isOpen = val
+ this.onClick(val, 'init')
+ }
+ },
+ updated(e) {
+ this.$nextTick(() => {
+ this.init(true)
+ })
+ },
+ created() {
+ this.collapse = this.getCollapse()
+ this.oldHeight = 0
+ this.onClick(this.open, 'init')
+ },
+ // #ifndef VUE3
+ // TODO vue2
+ destroyed() {
+ if (this.__isUnmounted) return
+ this.uninstall()
+ },
+ // #endif
+ // #ifdef VUE3
+ // TODO vue3
+ unmounted() {
+ this.__isUnmounted = true
+ this.uninstall()
+ },
+ // #endif
+ mounted() {
+ if (!this.collapse) return
+ if (this.name !== '') {
+ this.nameSync = this.name
+ } else {
+ this.nameSync = this.collapse.childrens.length + ''
+ }
+ if (this.collapse.names.indexOf(this.nameSync) === -1) {
+ this.collapse.names.push(this.nameSync)
+ } else {
+ console.warn(`name 鍊� ${this.nameSync} 閲嶅`);
+ }
+ if (this.collapse.childrens.indexOf(this) === -1) {
+ this.collapse.childrens.push(this)
+ }
+ this.init()
+ },
+ methods: {
+ init(type) {
+ // #ifndef APP-NVUE
+ this.getCollapseHeight(type)
+ // #endif
+ // #ifdef APP-NVUE
+ this.getNvueHwight(type)
+ // #endif
+ },
+ uninstall() {
+ if (this.collapse) {
+ this.collapse.childrens.forEach((item, index) => {
+ if (item === this) {
+ this.collapse.childrens.splice(index, 1)
+ }
+ })
+ this.collapse.names.forEach((item, index) => {
+ if (item === this.nameSync) {
+ this.collapse.names.splice(index, 1)
+ }
+ })
+ }
+ },
+ onClick(isOpen, type) {
+ if (this.disabled) return
+ this.isOpen = isOpen
+ if (this.isOpen && this.collapse) {
+ this.collapse.setAccordion(this)
+ }
+ if (type !== 'init') {
+ this.collapse.onChange(isOpen, this)
+ }
+ },
+ getCollapseHeight(type, index = 0) {
+ const views = uni.createSelectorQuery().in(this)
+ views
+ .select(`#${this.elId}`)
+ .fields({
+ size: true
+ }, data => {
+ // TODO 鐧惧害涓彲鑳借幏鍙栦笉鍒拌妭鐐逛俊鎭� 锛岄渶瑕佸惊鐜幏鍙�
+ if (index >= 10) return
+ if (!data) {
+ index++
+ this.getCollapseHeight(false, index)
+ return
+ }
+ // #ifdef APP-NVUE
+ this.height = data.height + 1
+ // #endif
+ // #ifndef APP-NVUE
+ this.height = data.height
+ // #endif
+ this.isheight = true
+ if (type) return
+ this.onClick(this.isOpen, 'init')
+ })
+ .exec()
+ },
+ getNvueHwight(type) {
+ const result = dom.getComponentRect(this.$refs['collapse--hook'], option => {
+ if (option && option.result && option.size) {
+ // #ifdef APP-NVUE
+ this.height = option.size.height + 1
+ // #endif
+ // #ifndef APP-NVUE
+ this.height = option.size.height
+ // #endif
+ this.isheight = true
+ if (type) return
+ this.onClick(this.open, 'init')
+ }
+ })
+ },
+ /**
+ * 鑾峰彇鐖跺厓绱犲疄渚�
+ */
+ getCollapse(name = 'uniCollapse') {
+ let parent = this.$parent;
+ let parentName = parent.$options.name;
+ while (parentName !== name) {
+ parent = parent.$parent;
+ if (!parent) return false;
+ parentName = parent.$options.name;
+ }
+ return parent;
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .uni-collapse-item {
+ /* #ifndef APP-NVUE */
+ box-sizing: border-box;
+
+ /* #endif */
+ &__title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ transition: border-bottom-color .3s;
+
+ // transition-property: border-bottom-color;
+ // transition-duration: 5s;
+ &-wrap {
+ width: 100%;
+ flex: 1;
+
+ }
+
+ &-box {
+ padding: 0 15px;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ height: 48px;
+ line-height: 48px;
+ background-color: #fff;
+ color: #303133;
+ font-size: 13px;
+ font-weight: 500;
+ /* #ifdef H5 */
+ cursor: pointer;
+ outline: none;
+
+ /* #endif */
+ &.is-disabled {
+ .uni-collapse-item__title-text {
+ color: #999;
+ }
+ }
+
+ }
+
+ &.uni-collapse-item-border {
+ border-bottom: 1px solid #ebeef5;
+ }
+
+ &.is-open {
+ border-bottom-color: transparent;
+ }
+
+ &-img {
+ height: 22px;
+ width: 22px;
+ margin-right: 10px;
+ }
+
+ &-text {
+ flex: 1;
+ font-size: 14px;
+ /* #ifndef APP-NVUE */
+ white-space: nowrap;
+ color: inherit;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ lines: 1;
+ /* #endif */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ &-arrow {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ box-sizing: border-box;
+ /* #endif */
+ align-items: center;
+ justify-content: center;
+ width: 20px;
+ height: 20px;
+ margin-right: 10px;
+ transform: rotate(0deg);
+
+ &-active {
+ transform: rotate(-180deg);
+ }
+ }
+
+
+ }
+
+ &__wrap {
+ /* #ifndef APP-NVUE */
+ will-change: height;
+ box-sizing: border-box;
+ /* #endif */
+ background-color: #fff;
+ overflow: hidden;
+ position: relative;
+ height: 0;
+
+ &.is--transition {
+ // transition: all 0.3s;
+ transition-property: height, border-bottom-width;
+ transition-duration: 0.3s;
+ /* #ifndef APP-NVUE */
+ will-change: height;
+ /* #endif */
+ }
+
+
+
+ &-content {
+ position: absolute;
+ font-size: 13px;
+ color: #303133;
+ // transition: height 0.3s;
+ border-bottom-color: transparent;
+ border-bottom-style: solid;
+ border-bottom-width: 0;
+
+ &.uni-collapse-item--border {
+ border-bottom-width: 1px;
+ border-bottom-color: red;
+ border-bottom-color: #ebeef5;
+ }
+
+ &.open {
+ position: relative;
+ }
+ }
+ }
+
+ &--animation {
+ transition-property: transform;
+ transition-duration: 0.3s;
+ transition-timing-function: ease;
+ }
+
+ }
+</style>
diff --git a/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..f87bb25
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
@@ -0,0 +1,147 @@
+<template>
+ <view class="uni-collapse">
+ <slot />
+ </view>
+</template>
+<script>
+ /**
+ * Collapse 鎶樺彔闈㈡澘
+ * @description 灞曠ず鍙互鎶樺彔 / 灞曞紑鐨勫唴瀹瑰尯鍩�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=23
+ * @property {String|Array} value 褰撳墠婵�娲婚潰鏉挎敼鍙樻椂瑙﹀彂(濡傛灉鏄墜椋庣惔妯″紡锛屽弬鏁扮被鍨嬩负string锛屽惁鍒欎负array)
+ * @property {Boolean} accordion = [true|false] 鏄惁寮�鍚墜椋庣惔鏁堟灉鏄惁寮�鍚墜椋庣惔鏁堟灉
+ * @event {Function} change 鍒囨崲闈㈡澘鏃惰Е鍙戯紝濡傛灉鏄墜椋庣惔妯″紡锛岃繑鍥炵被鍨嬩负string锛屽惁鍒欎负array
+ */
+ export default {
+ name: 'uniCollapse',
+ emits:['change','activeItem','input','update:modelValue'],
+ props: {
+ value: {
+ type: [String, Array],
+ default: ''
+ },
+ modelValue: {
+ type: [String, Array],
+ default: ''
+ },
+ accordion: {
+ // 鏄惁寮�鍚墜椋庣惔鏁堟灉
+ type: [Boolean, String],
+ default: false
+ },
+ },
+ data() {
+ return {}
+ },
+ computed: {
+ // TODO 鍏煎 vue2 鍜� vue3
+ dataValue() {
+ let value = (typeof this.value === 'string' && this.value === '') ||
+ (Array.isArray(this.value) && this.value.length === 0)
+ let modelValue = (typeof this.modelValue === 'string' && this.modelValue === '') ||
+ (Array.isArray(this.modelValue) && this.modelValue.length === 0)
+ if (value) {
+ return this.modelValue
+ }
+ if (modelValue) {
+ return this.value
+ }
+
+ return this.value
+ }
+ },
+ watch: {
+ dataValue(val) {
+ this.setOpen(val)
+ }
+ },
+ created() {
+ this.childrens = []
+ this.names = []
+ },
+ mounted() {
+ this.$nextTick(()=>{
+ this.setOpen(this.dataValue)
+ })
+ },
+ methods: {
+ setOpen(val) {
+ let str = typeof val === 'string'
+ let arr = Array.isArray(val)
+ this.childrens.forEach((vm, index) => {
+ if (str) {
+ if (val === vm.nameSync) {
+ if (!this.accordion) {
+ console.warn('accordion 灞炴�т负 false ,v-model 绫诲瀷搴旇涓� array')
+ return
+ }
+ vm.isOpen = true
+ }
+ }
+ if (arr) {
+ val.forEach(v => {
+ if (v === vm.nameSync) {
+ if (this.accordion) {
+ console.warn('accordion 灞炴�т负 true ,v-model 绫诲瀷搴旇涓� string')
+ return
+ }
+ vm.isOpen = true
+ }
+ })
+ }
+ })
+ this.emit(val)
+ },
+ setAccordion(self) {
+ if (!this.accordion) return
+ this.childrens.forEach((vm, index) => {
+ if (self !== vm) {
+ vm.isOpen = false
+ }
+ })
+ },
+ resize() {
+ this.childrens.forEach((vm, index) => {
+ // #ifndef APP-NVUE
+ vm.getCollapseHeight()
+ // #endif
+ // #ifdef APP-NVUE
+ vm.getNvueHwight()
+ // #endif
+ })
+ },
+ onChange(isOpen, self) {
+ let activeItem = []
+
+ if (this.accordion) {
+ activeItem = isOpen ? self.nameSync : ''
+ } else {
+ this.childrens.forEach((vm, index) => {
+ if (vm.isOpen) {
+ activeItem.push(vm.nameSync)
+ }
+ })
+ }
+ this.$emit('change', activeItem)
+ this.emit(activeItem)
+ },
+ emit(val){
+ this.$emit('input', val)
+ this.$emit('update:modelValue', val)
+ }
+ }
+ }
+</script>
+<style lang="scss" >
+ .uni-collapse {
+ /* #ifndef APP-NVUE */
+ width: 100%;
+ display: flex;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ flex: 1;
+ /* #endif */
+ flex-direction: column;
+ background-color: #fff;
+ }
+</style>
diff --git a/minipro_standard/uni_modules/uni-collapse/package.json b/minipro_standard/uni_modules/uni-collapse/package.json
new file mode 100644
index 0000000..65349cf
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/package.json
@@ -0,0 +1,89 @@
+{
+ "id": "uni-collapse",
+ "displayName": "uni-collapse 鎶樺彔闈㈡澘",
+ "version": "1.4.3",
+ "description": "Collapse 缁勪欢锛屽彲浠ユ姌鍙� / 灞曞紑鐨勫唴瀹瑰尯鍩熴��",
+ "keywords": [
+ "uni-ui",
+ "鎶樺彔",
+ "鎶樺彔闈㈡澘",
+ "鎵嬮鐞�"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "鍓嶇缁勪欢",
+ "閫氱敤缁勪欢"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "鏃�",
+ "data": "鏃�",
+ "permissions": "鏃�"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "寰俊娴忚鍣�(Android)": "y",
+ "QQ娴忚鍣�(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "灏忕▼搴�": {
+ "寰俊": "y",
+ "闃块噷": "y",
+ "鐧惧害": "y",
+ "瀛楄妭璺冲姩": "y",
+ "QQ": "y"
+ },
+ "蹇簲鐢�": {
+ "鍗庝负": "u",
+ "鑱旂洘": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/minipro_standard/uni_modules/uni-collapse/readme.md b/minipro_standard/uni_modules/uni-collapse/readme.md
new file mode 100644
index 0000000..bc758eb
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-collapse/readme.md
@@ -0,0 +1,12 @@
+
+
+## Collapse 鎶樺彔闈㈡澘
+> **缁勪欢鍚嶏細uni-collapse**
+> 浠g爜鍧楋細 `uCollapse`
+> 鍏宠仈缁勪欢锛歚uni-collapse-item`銆乣uni-icons`銆�
+
+
+鎶樺彔闈㈡澘鐢ㄦ潵鎶樺彔/鏄剧ず杩囬暱鐨勫唴瀹规垨鑰呮槸鍒楄〃銆傞�氬父鏄湪澶氬唴瀹瑰垎绫婚」浣跨敤锛屾姌鍙犱笉閲嶈鐨勫唴瀹癸紝鏄剧ず閲嶈鍐呭銆傜偣鍑诲彲浠ュ睍寮�鎶樺彔閮ㄥ垎銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-icons/changelog.md b/minipro_standard/uni_modules/uni-icons/changelog.md
new file mode 100644
index 0000000..6449885
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/changelog.md
@@ -0,0 +1,22 @@
+## 1.3.5锛�2022-01-24锛�
+- 浼樺寲 size 灞炴�у彲浠ヤ紶鍏ヤ笉甯﹀崟浣嶇殑瀛楃涓叉暟鍊�
+## 1.3.4锛�2022-01-24锛�
+- 浼樺寲 size 鏀寔鍏朵粬鍗曚綅
+## 1.3.3锛�2022-01-17锛�
+- 淇 nvue 鏈変簺鍥炬爣涓嶆樉绀虹殑bug锛屽吋瀹硅�佺増鏈浘鏍�
+## 1.3.2锛�2021-12-01锛�
+- 浼樺寲 绀轰緥鍙鍒跺浘鏍囧悕绉�
+## 1.3.1锛�2021-11-23锛�
+- 浼樺寲 鍏煎鏃х粍浠� type 鍊�
+## 1.3.0锛�2021-11-19锛�
+- 鏂板 鏇村鍥炬爣
+- 浼樺寲 鑷畾涔夊浘鏍囦娇鐢ㄦ柟寮�
+- 浼樺寲 缁勪欢UI锛屽苟鎻愪緵璁捐璧勬簮锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 鏂囨。杩佺Щ锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
+## 1.1.7锛�2021-11-08锛�
+## 1.2.0锛�2021-07-30锛�
+- 缁勪欢鍏煎 vue3锛屽浣曞垱寤簐ue3椤圭洰锛岃瑙� [uni-app 椤圭洰鏀寔 vue3 浠嬬粛](https://ask.dcloud.net.cn/article/37834)
+## 1.1.5锛�2021-05-12锛�
+- 鏂板 缁勪欢绀轰緥鍦板潃
+## 1.1.4锛�2021-02-05锛�
+- 璋冩暣涓簎ni_modules鐩綍瑙勮寖
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js b/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js
new file mode 100644
index 0000000..7889936
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js
@@ -0,0 +1,1169 @@
+export default {
+ "id": "2852637",
+ "name": "uniui鍥炬爣搴�",
+ "font_family": "uniicons",
+ "css_prefix_text": "uniui-",
+ "description": "",
+ "glyphs": [
+ {
+ "icon_id": "25027049",
+ "name": "yanse",
+ "font_class": "color",
+ "unicode": "e6cf",
+ "unicode_decimal": 59087
+ },
+ {
+ "icon_id": "25027048",
+ "name": "wallet",
+ "font_class": "wallet",
+ "unicode": "e6b1",
+ "unicode_decimal": 59057
+ },
+ {
+ "icon_id": "25015720",
+ "name": "settings-filled",
+ "font_class": "settings-filled",
+ "unicode": "e6ce",
+ "unicode_decimal": 59086
+ },
+ {
+ "icon_id": "25015434",
+ "name": "shimingrenzheng-filled",
+ "font_class": "auth-filled",
+ "unicode": "e6cc",
+ "unicode_decimal": 59084
+ },
+ {
+ "icon_id": "24934246",
+ "name": "shop-filled",
+ "font_class": "shop-filled",
+ "unicode": "e6cd",
+ "unicode_decimal": 59085
+ },
+ {
+ "icon_id": "24934159",
+ "name": "staff-filled-01",
+ "font_class": "staff-filled",
+ "unicode": "e6cb",
+ "unicode_decimal": 59083
+ },
+ {
+ "icon_id": "24932461",
+ "name": "VIP-filled",
+ "font_class": "vip-filled",
+ "unicode": "e6c6",
+ "unicode_decimal": 59078
+ },
+ {
+ "icon_id": "24932462",
+ "name": "plus_circle_fill",
+ "font_class": "plus-filled",
+ "unicode": "e6c7",
+ "unicode_decimal": 59079
+ },
+ {
+ "icon_id": "24932463",
+ "name": "folder_add-filled",
+ "font_class": "folder-add-filled",
+ "unicode": "e6c8",
+ "unicode_decimal": 59080
+ },
+ {
+ "icon_id": "24932464",
+ "name": "yanse-filled",
+ "font_class": "color-filled",
+ "unicode": "e6c9",
+ "unicode_decimal": 59081
+ },
+ {
+ "icon_id": "24932465",
+ "name": "tune-filled",
+ "font_class": "tune-filled",
+ "unicode": "e6ca",
+ "unicode_decimal": 59082
+ },
+ {
+ "icon_id": "24932455",
+ "name": "a-rilidaka-filled",
+ "font_class": "calendar-filled",
+ "unicode": "e6c0",
+ "unicode_decimal": 59072
+ },
+ {
+ "icon_id": "24932456",
+ "name": "notification-filled",
+ "font_class": "notification-filled",
+ "unicode": "e6c1",
+ "unicode_decimal": 59073
+ },
+ {
+ "icon_id": "24932457",
+ "name": "wallet-filled",
+ "font_class": "wallet-filled",
+ "unicode": "e6c2",
+ "unicode_decimal": 59074
+ },
+ {
+ "icon_id": "24932458",
+ "name": "paihangbang-filled",
+ "font_class": "medal-filled",
+ "unicode": "e6c3",
+ "unicode_decimal": 59075
+ },
+ {
+ "icon_id": "24932459",
+ "name": "gift-filled",
+ "font_class": "gift-filled",
+ "unicode": "e6c4",
+ "unicode_decimal": 59076
+ },
+ {
+ "icon_id": "24932460",
+ "name": "fire-filled",
+ "font_class": "fire-filled",
+ "unicode": "e6c5",
+ "unicode_decimal": 59077
+ },
+ {
+ "icon_id": "24928001",
+ "name": "refreshempty",
+ "font_class": "refreshempty",
+ "unicode": "e6bf",
+ "unicode_decimal": 59071
+ },
+ {
+ "icon_id": "24926853",
+ "name": "location-ellipse",
+ "font_class": "location-filled",
+ "unicode": "e6af",
+ "unicode_decimal": 59055
+ },
+ {
+ "icon_id": "24926735",
+ "name": "person-filled",
+ "font_class": "person-filled",
+ "unicode": "e69d",
+ "unicode_decimal": 59037
+ },
+ {
+ "icon_id": "24926703",
+ "name": "personadd-filled",
+ "font_class": "personadd-filled",
+ "unicode": "e698",
+ "unicode_decimal": 59032
+ },
+ {
+ "icon_id": "24923351",
+ "name": "back",
+ "font_class": "back",
+ "unicode": "e6b9",
+ "unicode_decimal": 59065
+ },
+ {
+ "icon_id": "24923352",
+ "name": "forward",
+ "font_class": "forward",
+ "unicode": "e6ba",
+ "unicode_decimal": 59066
+ },
+ {
+ "icon_id": "24923353",
+ "name": "arrowthinright",
+ "font_class": "arrow-right",
+ "unicode": "e6bb",
+ "unicode_decimal": 59067
+ },
+ {
+ "icon_id": "24923353",
+ "name": "arrowthinright",
+ "font_class": "arrowthinright",
+ "unicode": "e6bb",
+ "unicode_decimal": 59067
+ },
+ {
+ "icon_id": "24923354",
+ "name": "arrowthinleft",
+ "font_class": "arrow-left",
+ "unicode": "e6bc",
+ "unicode_decimal": 59068
+ },
+ {
+ "icon_id": "24923354",
+ "name": "arrowthinleft",
+ "font_class": "arrowthinleft",
+ "unicode": "e6bc",
+ "unicode_decimal": 59068
+ },
+ {
+ "icon_id": "24923355",
+ "name": "arrowthinup",
+ "font_class": "arrow-up",
+ "unicode": "e6bd",
+ "unicode_decimal": 59069
+ },
+ {
+ "icon_id": "24923355",
+ "name": "arrowthinup",
+ "font_class": "arrowthinup",
+ "unicode": "e6bd",
+ "unicode_decimal": 59069
+ },
+ {
+ "icon_id": "24923356",
+ "name": "arrowthindown",
+ "font_class": "arrow-down",
+ "unicode": "e6be",
+ "unicode_decimal": 59070
+ },{
+ "icon_id": "24923356",
+ "name": "arrowthindown",
+ "font_class": "arrowthindown",
+ "unicode": "e6be",
+ "unicode_decimal": 59070
+ },
+ {
+ "icon_id": "24923349",
+ "name": "arrowdown",
+ "font_class": "bottom",
+ "unicode": "e6b8",
+ "unicode_decimal": 59064
+ },{
+ "icon_id": "24923349",
+ "name": "arrowdown",
+ "font_class": "arrowdown",
+ "unicode": "e6b8",
+ "unicode_decimal": 59064
+ },
+ {
+ "icon_id": "24923346",
+ "name": "arrowright",
+ "font_class": "right",
+ "unicode": "e6b5",
+ "unicode_decimal": 59061
+ },
+ {
+ "icon_id": "24923346",
+ "name": "arrowright",
+ "font_class": "arrowright",
+ "unicode": "e6b5",
+ "unicode_decimal": 59061
+ },
+ {
+ "icon_id": "24923347",
+ "name": "arrowup",
+ "font_class": "top",
+ "unicode": "e6b6",
+ "unicode_decimal": 59062
+ },
+ {
+ "icon_id": "24923347",
+ "name": "arrowup",
+ "font_class": "arrowup",
+ "unicode": "e6b6",
+ "unicode_decimal": 59062
+ },
+ {
+ "icon_id": "24923348",
+ "name": "arrowleft",
+ "font_class": "left",
+ "unicode": "e6b7",
+ "unicode_decimal": 59063
+ },
+ {
+ "icon_id": "24923348",
+ "name": "arrowleft",
+ "font_class": "arrowleft",
+ "unicode": "e6b7",
+ "unicode_decimal": 59063
+ },
+ {
+ "icon_id": "24923334",
+ "name": "eye",
+ "font_class": "eye",
+ "unicode": "e651",
+ "unicode_decimal": 58961
+ },
+ {
+ "icon_id": "24923335",
+ "name": "eye-filled",
+ "font_class": "eye-filled",
+ "unicode": "e66a",
+ "unicode_decimal": 58986
+ },
+ {
+ "icon_id": "24923336",
+ "name": "eye-slash",
+ "font_class": "eye-slash",
+ "unicode": "e6b3",
+ "unicode_decimal": 59059
+ },
+ {
+ "icon_id": "24923337",
+ "name": "eye-slash-filled",
+ "font_class": "eye-slash-filled",
+ "unicode": "e6b4",
+ "unicode_decimal": 59060
+ },
+ {
+ "icon_id": "24923305",
+ "name": "info-filled",
+ "font_class": "info-filled",
+ "unicode": "e649",
+ "unicode_decimal": 58953
+ },
+ {
+ "icon_id": "24923299",
+ "name": "reload-01",
+ "font_class": "reload",
+ "unicode": "e6b2",
+ "unicode_decimal": 59058
+ },
+ {
+ "icon_id": "24923195",
+ "name": "mic_slash_fill",
+ "font_class": "micoff-filled",
+ "unicode": "e6b0",
+ "unicode_decimal": 59056
+ },
+ {
+ "icon_id": "24923165",
+ "name": "map-pin-ellipse",
+ "font_class": "map-pin-ellipse",
+ "unicode": "e6ac",
+ "unicode_decimal": 59052
+ },
+ {
+ "icon_id": "24923166",
+ "name": "map-pin",
+ "font_class": "map-pin",
+ "unicode": "e6ad",
+ "unicode_decimal": 59053
+ },
+ {
+ "icon_id": "24923167",
+ "name": "location",
+ "font_class": "location",
+ "unicode": "e6ae",
+ "unicode_decimal": 59054
+ },
+ {
+ "icon_id": "24923064",
+ "name": "starhalf",
+ "font_class": "starhalf",
+ "unicode": "e683",
+ "unicode_decimal": 59011
+ },
+ {
+ "icon_id": "24923065",
+ "name": "star",
+ "font_class": "star",
+ "unicode": "e688",
+ "unicode_decimal": 59016
+ },
+ {
+ "icon_id": "24923066",
+ "name": "star-filled",
+ "font_class": "star-filled",
+ "unicode": "e68f",
+ "unicode_decimal": 59023
+ },
+ {
+ "icon_id": "24899646",
+ "name": "a-rilidaka",
+ "font_class": "calendar",
+ "unicode": "e6a0",
+ "unicode_decimal": 59040
+ },
+ {
+ "icon_id": "24899647",
+ "name": "fire",
+ "font_class": "fire",
+ "unicode": "e6a1",
+ "unicode_decimal": 59041
+ },
+ {
+ "icon_id": "24899648",
+ "name": "paihangbang",
+ "font_class": "medal",
+ "unicode": "e6a2",
+ "unicode_decimal": 59042
+ },
+ {
+ "icon_id": "24899649",
+ "name": "font",
+ "font_class": "font",
+ "unicode": "e6a3",
+ "unicode_decimal": 59043
+ },
+ {
+ "icon_id": "24899650",
+ "name": "gift",
+ "font_class": "gift",
+ "unicode": "e6a4",
+ "unicode_decimal": 59044
+ },
+ {
+ "icon_id": "24899651",
+ "name": "link",
+ "font_class": "link",
+ "unicode": "e6a5",
+ "unicode_decimal": 59045
+ },
+ {
+ "icon_id": "24899652",
+ "name": "notification",
+ "font_class": "notification",
+ "unicode": "e6a6",
+ "unicode_decimal": 59046
+ },
+ {
+ "icon_id": "24899653",
+ "name": "staff",
+ "font_class": "staff",
+ "unicode": "e6a7",
+ "unicode_decimal": 59047
+ },
+ {
+ "icon_id": "24899654",
+ "name": "VIP",
+ "font_class": "vip",
+ "unicode": "e6a8",
+ "unicode_decimal": 59048
+ },
+ {
+ "icon_id": "24899655",
+ "name": "folder_add",
+ "font_class": "folder-add",
+ "unicode": "e6a9",
+ "unicode_decimal": 59049
+ },
+ {
+ "icon_id": "24899656",
+ "name": "tune",
+ "font_class": "tune",
+ "unicode": "e6aa",
+ "unicode_decimal": 59050
+ },
+ {
+ "icon_id": "24899657",
+ "name": "shimingrenzheng",
+ "font_class": "auth",
+ "unicode": "e6ab",
+ "unicode_decimal": 59051
+ },
+ {
+ "icon_id": "24899565",
+ "name": "person",
+ "font_class": "person",
+ "unicode": "e699",
+ "unicode_decimal": 59033
+ },
+ {
+ "icon_id": "24899566",
+ "name": "email-filled",
+ "font_class": "email-filled",
+ "unicode": "e69a",
+ "unicode_decimal": 59034
+ },
+ {
+ "icon_id": "24899567",
+ "name": "phone-filled",
+ "font_class": "phone-filled",
+ "unicode": "e69b",
+ "unicode_decimal": 59035
+ },
+ {
+ "icon_id": "24899568",
+ "name": "phone",
+ "font_class": "phone",
+ "unicode": "e69c",
+ "unicode_decimal": 59036
+ },
+ {
+ "icon_id": "24899570",
+ "name": "email",
+ "font_class": "email",
+ "unicode": "e69e",
+ "unicode_decimal": 59038
+ },
+ {
+ "icon_id": "24899571",
+ "name": "personadd",
+ "font_class": "personadd",
+ "unicode": "e69f",
+ "unicode_decimal": 59039
+ },
+ {
+ "icon_id": "24899558",
+ "name": "chatboxes-filled",
+ "font_class": "chatboxes-filled",
+ "unicode": "e692",
+ "unicode_decimal": 59026
+ },
+ {
+ "icon_id": "24899559",
+ "name": "contact",
+ "font_class": "contact",
+ "unicode": "e693",
+ "unicode_decimal": 59027
+ },
+ {
+ "icon_id": "24899560",
+ "name": "chatbubble-filled",
+ "font_class": "chatbubble-filled",
+ "unicode": "e694",
+ "unicode_decimal": 59028
+ },
+ {
+ "icon_id": "24899561",
+ "name": "contact-filled",
+ "font_class": "contact-filled",
+ "unicode": "e695",
+ "unicode_decimal": 59029
+ },
+ {
+ "icon_id": "24899562",
+ "name": "chatboxes",
+ "font_class": "chatboxes",
+ "unicode": "e696",
+ "unicode_decimal": 59030
+ },
+ {
+ "icon_id": "24899563",
+ "name": "chatbubble",
+ "font_class": "chatbubble",
+ "unicode": "e697",
+ "unicode_decimal": 59031
+ },
+ {
+ "icon_id": "24881290",
+ "name": "upload-filled",
+ "font_class": "upload-filled",
+ "unicode": "e68e",
+ "unicode_decimal": 59022
+ },
+ {
+ "icon_id": "24881292",
+ "name": "upload",
+ "font_class": "upload",
+ "unicode": "e690",
+ "unicode_decimal": 59024
+ },
+ {
+ "icon_id": "24881293",
+ "name": "weixin",
+ "font_class": "weixin",
+ "unicode": "e691",
+ "unicode_decimal": 59025
+ },
+ {
+ "icon_id": "24881274",
+ "name": "compose",
+ "font_class": "compose",
+ "unicode": "e67f",
+ "unicode_decimal": 59007
+ },
+ {
+ "icon_id": "24881275",
+ "name": "qq",
+ "font_class": "qq",
+ "unicode": "e680",
+ "unicode_decimal": 59008
+ },
+ {
+ "icon_id": "24881276",
+ "name": "download-filled",
+ "font_class": "download-filled",
+ "unicode": "e681",
+ "unicode_decimal": 59009
+ },
+ {
+ "icon_id": "24881277",
+ "name": "pengyouquan",
+ "font_class": "pyq",
+ "unicode": "e682",
+ "unicode_decimal": 59010
+ },
+ {
+ "icon_id": "24881279",
+ "name": "sound",
+ "font_class": "sound",
+ "unicode": "e684",
+ "unicode_decimal": 59012
+ },
+ {
+ "icon_id": "24881280",
+ "name": "trash-filled",
+ "font_class": "trash-filled",
+ "unicode": "e685",
+ "unicode_decimal": 59013
+ },
+ {
+ "icon_id": "24881281",
+ "name": "sound-filled",
+ "font_class": "sound-filled",
+ "unicode": "e686",
+ "unicode_decimal": 59014
+ },
+ {
+ "icon_id": "24881282",
+ "name": "trash",
+ "font_class": "trash",
+ "unicode": "e687",
+ "unicode_decimal": 59015
+ },
+ {
+ "icon_id": "24881284",
+ "name": "videocam-filled",
+ "font_class": "videocam-filled",
+ "unicode": "e689",
+ "unicode_decimal": 59017
+ },
+ {
+ "icon_id": "24881285",
+ "name": "spinner-cycle",
+ "font_class": "spinner-cycle",
+ "unicode": "e68a",
+ "unicode_decimal": 59018
+ },
+ {
+ "icon_id": "24881286",
+ "name": "weibo",
+ "font_class": "weibo",
+ "unicode": "e68b",
+ "unicode_decimal": 59019
+ },
+ {
+ "icon_id": "24881288",
+ "name": "videocam",
+ "font_class": "videocam",
+ "unicode": "e68c",
+ "unicode_decimal": 59020
+ },
+ {
+ "icon_id": "24881289",
+ "name": "download",
+ "font_class": "download",
+ "unicode": "e68d",
+ "unicode_decimal": 59021
+ },
+ {
+ "icon_id": "24879601",
+ "name": "help",
+ "font_class": "help",
+ "unicode": "e679",
+ "unicode_decimal": 59001
+ },
+ {
+ "icon_id": "24879602",
+ "name": "navigate-filled",
+ "font_class": "navigate-filled",
+ "unicode": "e67a",
+ "unicode_decimal": 59002
+ },
+ {
+ "icon_id": "24879603",
+ "name": "plusempty",
+ "font_class": "plusempty",
+ "unicode": "e67b",
+ "unicode_decimal": 59003
+ },
+ {
+ "icon_id": "24879604",
+ "name": "smallcircle",
+ "font_class": "smallcircle",
+ "unicode": "e67c",
+ "unicode_decimal": 59004
+ },
+ {
+ "icon_id": "24879605",
+ "name": "minus-filled",
+ "font_class": "minus-filled",
+ "unicode": "e67d",
+ "unicode_decimal": 59005
+ },
+ {
+ "icon_id": "24879606",
+ "name": "micoff",
+ "font_class": "micoff",
+ "unicode": "e67e",
+ "unicode_decimal": 59006
+ },
+ {
+ "icon_id": "24879588",
+ "name": "closeempty",
+ "font_class": "closeempty",
+ "unicode": "e66c",
+ "unicode_decimal": 58988
+ },
+ {
+ "icon_id": "24879589",
+ "name": "clear",
+ "font_class": "clear",
+ "unicode": "e66d",
+ "unicode_decimal": 58989
+ },
+ {
+ "icon_id": "24879590",
+ "name": "navigate",
+ "font_class": "navigate",
+ "unicode": "e66e",
+ "unicode_decimal": 58990
+ },
+ {
+ "icon_id": "24879591",
+ "name": "minus",
+ "font_class": "minus",
+ "unicode": "e66f",
+ "unicode_decimal": 58991
+ },
+ {
+ "icon_id": "24879592",
+ "name": "image",
+ "font_class": "image",
+ "unicode": "e670",
+ "unicode_decimal": 58992
+ },
+ {
+ "icon_id": "24879593",
+ "name": "mic",
+ "font_class": "mic",
+ "unicode": "e671",
+ "unicode_decimal": 58993
+ },
+ {
+ "icon_id": "24879594",
+ "name": "paperplane",
+ "font_class": "paperplane",
+ "unicode": "e672",
+ "unicode_decimal": 58994
+ },
+ {
+ "icon_id": "24879595",
+ "name": "close",
+ "font_class": "close",
+ "unicode": "e673",
+ "unicode_decimal": 58995
+ },
+ {
+ "icon_id": "24879596",
+ "name": "help-filled",
+ "font_class": "help-filled",
+ "unicode": "e674",
+ "unicode_decimal": 58996
+ },
+ {
+ "icon_id": "24879597",
+ "name": "plus-filled",
+ "font_class": "paperplane-filled",
+ "unicode": "e675",
+ "unicode_decimal": 58997
+ },
+ {
+ "icon_id": "24879598",
+ "name": "plus",
+ "font_class": "plus",
+ "unicode": "e676",
+ "unicode_decimal": 58998
+ },
+ {
+ "icon_id": "24879599",
+ "name": "mic-filled",
+ "font_class": "mic-filled",
+ "unicode": "e677",
+ "unicode_decimal": 58999
+ },
+ {
+ "icon_id": "24879600",
+ "name": "image-filled",
+ "font_class": "image-filled",
+ "unicode": "e678",
+ "unicode_decimal": 59000
+ },
+ {
+ "icon_id": "24855900",
+ "name": "locked-filled",
+ "font_class": "locked-filled",
+ "unicode": "e668",
+ "unicode_decimal": 58984
+ },
+ {
+ "icon_id": "24855901",
+ "name": "info",
+ "font_class": "info",
+ "unicode": "e669",
+ "unicode_decimal": 58985
+ },
+ {
+ "icon_id": "24855903",
+ "name": "locked",
+ "font_class": "locked",
+ "unicode": "e66b",
+ "unicode_decimal": 58987
+ },
+ {
+ "icon_id": "24855884",
+ "name": "camera-filled",
+ "font_class": "camera-filled",
+ "unicode": "e658",
+ "unicode_decimal": 58968
+ },
+ {
+ "icon_id": "24855885",
+ "name": "chat-filled",
+ "font_class": "chat-filled",
+ "unicode": "e659",
+ "unicode_decimal": 58969
+ },
+ {
+ "icon_id": "24855886",
+ "name": "camera",
+ "font_class": "camera",
+ "unicode": "e65a",
+ "unicode_decimal": 58970
+ },
+ {
+ "icon_id": "24855887",
+ "name": "circle",
+ "font_class": "circle",
+ "unicode": "e65b",
+ "unicode_decimal": 58971
+ },
+ {
+ "icon_id": "24855888",
+ "name": "checkmarkempty",
+ "font_class": "checkmarkempty",
+ "unicode": "e65c",
+ "unicode_decimal": 58972
+ },
+ {
+ "icon_id": "24855889",
+ "name": "chat",
+ "font_class": "chat",
+ "unicode": "e65d",
+ "unicode_decimal": 58973
+ },
+ {
+ "icon_id": "24855890",
+ "name": "circle-filled",
+ "font_class": "circle-filled",
+ "unicode": "e65e",
+ "unicode_decimal": 58974
+ },
+ {
+ "icon_id": "24855891",
+ "name": "flag",
+ "font_class": "flag",
+ "unicode": "e65f",
+ "unicode_decimal": 58975
+ },
+ {
+ "icon_id": "24855892",
+ "name": "flag-filled",
+ "font_class": "flag-filled",
+ "unicode": "e660",
+ "unicode_decimal": 58976
+ },
+ {
+ "icon_id": "24855893",
+ "name": "gear-filled",
+ "font_class": "gear-filled",
+ "unicode": "e661",
+ "unicode_decimal": 58977
+ },
+ {
+ "icon_id": "24855894",
+ "name": "home",
+ "font_class": "home",
+ "unicode": "e662",
+ "unicode_decimal": 58978
+ },
+ {
+ "icon_id": "24855895",
+ "name": "home-filled",
+ "font_class": "home-filled",
+ "unicode": "e663",
+ "unicode_decimal": 58979
+ },
+ {
+ "icon_id": "24855896",
+ "name": "gear",
+ "font_class": "gear",
+ "unicode": "e664",
+ "unicode_decimal": 58980
+ },
+ {
+ "icon_id": "24855897",
+ "name": "smallcircle-filled",
+ "font_class": "smallcircle-filled",
+ "unicode": "e665",
+ "unicode_decimal": 58981
+ },
+ {
+ "icon_id": "24855898",
+ "name": "map-filled",
+ "font_class": "map-filled",
+ "unicode": "e666",
+ "unicode_decimal": 58982
+ },
+ {
+ "icon_id": "24855899",
+ "name": "map",
+ "font_class": "map",
+ "unicode": "e667",
+ "unicode_decimal": 58983
+ },
+ {
+ "icon_id": "24855825",
+ "name": "refresh-filled",
+ "font_class": "refresh-filled",
+ "unicode": "e656",
+ "unicode_decimal": 58966
+ },
+ {
+ "icon_id": "24855826",
+ "name": "refresh",
+ "font_class": "refresh",
+ "unicode": "e657",
+ "unicode_decimal": 58967
+ },
+ {
+ "icon_id": "24855808",
+ "name": "cloud-upload",
+ "font_class": "cloud-upload",
+ "unicode": "e645",
+ "unicode_decimal": 58949
+ },
+ {
+ "icon_id": "24855809",
+ "name": "cloud-download-filled",
+ "font_class": "cloud-download-filled",
+ "unicode": "e646",
+ "unicode_decimal": 58950
+ },
+ {
+ "icon_id": "24855810",
+ "name": "cloud-download",
+ "font_class": "cloud-download",
+ "unicode": "e647",
+ "unicode_decimal": 58951
+ },
+ {
+ "icon_id": "24855811",
+ "name": "cloud-upload-filled",
+ "font_class": "cloud-upload-filled",
+ "unicode": "e648",
+ "unicode_decimal": 58952
+ },
+ {
+ "icon_id": "24855813",
+ "name": "redo",
+ "font_class": "redo",
+ "unicode": "e64a",
+ "unicode_decimal": 58954
+ },
+ {
+ "icon_id": "24855814",
+ "name": "images-filled",
+ "font_class": "images-filled",
+ "unicode": "e64b",
+ "unicode_decimal": 58955
+ },
+ {
+ "icon_id": "24855815",
+ "name": "undo-filled",
+ "font_class": "undo-filled",
+ "unicode": "e64c",
+ "unicode_decimal": 58956
+ },
+ {
+ "icon_id": "24855816",
+ "name": "more",
+ "font_class": "more",
+ "unicode": "e64d",
+ "unicode_decimal": 58957
+ },
+ {
+ "icon_id": "24855817",
+ "name": "more-filled",
+ "font_class": "more-filled",
+ "unicode": "e64e",
+ "unicode_decimal": 58958
+ },
+ {
+ "icon_id": "24855818",
+ "name": "undo",
+ "font_class": "undo",
+ "unicode": "e64f",
+ "unicode_decimal": 58959
+ },
+ {
+ "icon_id": "24855819",
+ "name": "images",
+ "font_class": "images",
+ "unicode": "e650",
+ "unicode_decimal": 58960
+ },
+ {
+ "icon_id": "24855821",
+ "name": "paperclip",
+ "font_class": "paperclip",
+ "unicode": "e652",
+ "unicode_decimal": 58962
+ },
+ {
+ "icon_id": "24855822",
+ "name": "settings",
+ "font_class": "settings",
+ "unicode": "e653",
+ "unicode_decimal": 58963
+ },
+ {
+ "icon_id": "24855823",
+ "name": "search",
+ "font_class": "search",
+ "unicode": "e654",
+ "unicode_decimal": 58964
+ },
+ {
+ "icon_id": "24855824",
+ "name": "redo-filled",
+ "font_class": "redo-filled",
+ "unicode": "e655",
+ "unicode_decimal": 58965
+ },
+ {
+ "icon_id": "24841702",
+ "name": "list",
+ "font_class": "list",
+ "unicode": "e644",
+ "unicode_decimal": 58948
+ },
+ {
+ "icon_id": "24841489",
+ "name": "mail-open-filled",
+ "font_class": "mail-open-filled",
+ "unicode": "e63a",
+ "unicode_decimal": 58938
+ },
+ {
+ "icon_id": "24841491",
+ "name": "hand-thumbsdown-filled",
+ "font_class": "hand-down-filled",
+ "unicode": "e63c",
+ "unicode_decimal": 58940
+ },
+ {
+ "icon_id": "24841492",
+ "name": "hand-thumbsdown",
+ "font_class": "hand-down",
+ "unicode": "e63d",
+ "unicode_decimal": 58941
+ },
+ {
+ "icon_id": "24841493",
+ "name": "hand-thumbsup-filled",
+ "font_class": "hand-up-filled",
+ "unicode": "e63e",
+ "unicode_decimal": 58942
+ },
+ {
+ "icon_id": "24841494",
+ "name": "hand-thumbsup",
+ "font_class": "hand-up",
+ "unicode": "e63f",
+ "unicode_decimal": 58943
+ },
+ {
+ "icon_id": "24841496",
+ "name": "heart-filled",
+ "font_class": "heart-filled",
+ "unicode": "e641",
+ "unicode_decimal": 58945
+ },
+ {
+ "icon_id": "24841498",
+ "name": "mail-open",
+ "font_class": "mail-open",
+ "unicode": "e643",
+ "unicode_decimal": 58947
+ },
+ {
+ "icon_id": "24841488",
+ "name": "heart",
+ "font_class": "heart",
+ "unicode": "e639",
+ "unicode_decimal": 58937
+ },
+ {
+ "icon_id": "24839963",
+ "name": "loop",
+ "font_class": "loop",
+ "unicode": "e633",
+ "unicode_decimal": 58931
+ },
+ {
+ "icon_id": "24839866",
+ "name": "pulldown",
+ "font_class": "pulldown",
+ "unicode": "e632",
+ "unicode_decimal": 58930
+ },
+ {
+ "icon_id": "24813798",
+ "name": "scan",
+ "font_class": "scan",
+ "unicode": "e62a",
+ "unicode_decimal": 58922
+ },
+ {
+ "icon_id": "24813786",
+ "name": "bars",
+ "font_class": "bars",
+ "unicode": "e627",
+ "unicode_decimal": 58919
+ },
+ {
+ "icon_id": "24813788",
+ "name": "cart-filled",
+ "font_class": "cart-filled",
+ "unicode": "e629",
+ "unicode_decimal": 58921
+ },
+ {
+ "icon_id": "24813790",
+ "name": "checkbox",
+ "font_class": "checkbox",
+ "unicode": "e62b",
+ "unicode_decimal": 58923
+ },
+ {
+ "icon_id": "24813791",
+ "name": "checkbox-filled",
+ "font_class": "checkbox-filled",
+ "unicode": "e62c",
+ "unicode_decimal": 58924
+ },
+ {
+ "icon_id": "24813794",
+ "name": "shop",
+ "font_class": "shop",
+ "unicode": "e62f",
+ "unicode_decimal": 58927
+ },
+ {
+ "icon_id": "24813795",
+ "name": "headphones",
+ "font_class": "headphones",
+ "unicode": "e630",
+ "unicode_decimal": 58928
+ },
+ {
+ "icon_id": "24813796",
+ "name": "cart",
+ "font_class": "cart",
+ "unicode": "e631",
+ "unicode_decimal": 58929
+ }
+ ]
+}
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
new file mode 100644
index 0000000..a87f68e
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
@@ -0,0 +1,96 @@
+<template>
+ <!-- #ifdef APP-NVUE -->
+ <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE -->
+ <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
+ <!-- #endif -->
+</template>
+
+<script>
+ import icons from './icons.js';
+ const getVal = (val) => {
+ const reg = /^[0-9]*$/g
+ return (typeof val === 'number' ||銆�reg.test(val) )? val + 'px' : val;
+ }
+ // #ifdef APP-NVUE
+ var domModule = weex.requireModule('dom');
+ import iconUrl from './uniicons.ttf'
+ domModule.addRule('fontFace', {
+ 'fontFamily': "uniicons",
+ 'src': "url('"+iconUrl+"')"
+ });
+ // #endif
+
+ /**
+ * Icons 鍥炬爣
+ * @description 鐢ㄤ簬灞曠ず icons 鍥炬爣
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=28
+ * @property {Number} size 鍥炬爣澶у皬
+ * @property {String} type 鍥炬爣鍥炬锛屽弬鑰冪ず渚�
+ * @property {String} color 鍥炬爣棰滆壊
+ * @property {String} customPrefix 鑷畾涔夊浘鏍�
+ * @event {Function} click 鐐瑰嚮 Icon 瑙﹀彂浜嬩欢
+ */
+ export default {
+ name: 'UniIcons',
+ emits:['click'],
+ props: {
+ type: {
+ type: String,
+ default: ''
+ },
+ color: {
+ type: String,
+ default: '#333333'
+ },
+ size: {
+ type: [Number, String],
+ default: 16
+ },
+ customPrefix:{
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ icons: icons.glyphs
+ }
+ },
+ computed:{
+ unicode(){
+ let code = this.icons.find(v=>v.font_class === this.type)
+ if(code){
+ return unescape(`%u${code.unicode}`)
+ }
+ return ''
+ },
+ iconSize(){
+ return getVal(this.size)
+ }
+ },
+ methods: {
+ _onClick() {
+ this.$emit('click')
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ /* #ifndef APP-NVUE */
+ @import './uniicons.css';
+ @font-face {
+ font-family: uniicons;
+ src: url('./uniicons.ttf') format('truetype');
+ }
+
+ /* #endif */
+ .uni-icons {
+ font-family: uniicons;
+ text-decoration: none;
+ text-align: center;
+ }
+
+</style>
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css
new file mode 100644
index 0000000..2f56eab
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css
@@ -0,0 +1,663 @@
+.uniui-color:before {
+ content: "\e6cf";
+}
+
+.uniui-wallet:before {
+ content: "\e6b1";
+}
+
+.uniui-settings-filled:before {
+ content: "\e6ce";
+}
+
+.uniui-auth-filled:before {
+ content: "\e6cc";
+}
+
+.uniui-shop-filled:before {
+ content: "\e6cd";
+}
+
+.uniui-staff-filled:before {
+ content: "\e6cb";
+}
+
+.uniui-vip-filled:before {
+ content: "\e6c6";
+}
+
+.uniui-plus-filled:before {
+ content: "\e6c7";
+}
+
+.uniui-folder-add-filled:before {
+ content: "\e6c8";
+}
+
+.uniui-color-filled:before {
+ content: "\e6c9";
+}
+
+.uniui-tune-filled:before {
+ content: "\e6ca";
+}
+
+.uniui-calendar-filled:before {
+ content: "\e6c0";
+}
+
+.uniui-notification-filled:before {
+ content: "\e6c1";
+}
+
+.uniui-wallet-filled:before {
+ content: "\e6c2";
+}
+
+.uniui-medal-filled:before {
+ content: "\e6c3";
+}
+
+.uniui-gift-filled:before {
+ content: "\e6c4";
+}
+
+.uniui-fire-filled:before {
+ content: "\e6c5";
+}
+
+.uniui-refreshempty:before {
+ content: "\e6bf";
+}
+
+.uniui-location-filled:before {
+ content: "\e6af";
+}
+
+.uniui-person-filled:before {
+ content: "\e69d";
+}
+
+.uniui-personadd-filled:before {
+ content: "\e698";
+}
+
+.uniui-back:before {
+ content: "\e6b9";
+}
+
+.uniui-forward:before {
+ content: "\e6ba";
+}
+
+.uniui-arrow-right:before {
+ content: "\e6bb";
+}
+
+.uniui-arrowthinright:before {
+ content: "\e6bb";
+}
+
+.uniui-arrow-left:before {
+ content: "\e6bc";
+}
+
+.uniui-arrowthinleft:before {
+ content: "\e6bc";
+}
+
+.uniui-arrow-up:before {
+ content: "\e6bd";
+}
+
+.uniui-arrowthinup:before {
+ content: "\e6bd";
+}
+
+.uniui-arrow-down:before {
+ content: "\e6be";
+}
+
+.uniui-arrowthindown:before {
+ content: "\e6be";
+}
+
+.uniui-bottom:before {
+ content: "\e6b8";
+}
+
+.uniui-arrowdown:before {
+ content: "\e6b8";
+}
+
+.uniui-right:before {
+ content: "\e6b5";
+}
+
+.uniui-arrowright:before {
+ content: "\e6b5";
+}
+
+.uniui-top:before {
+ content: "\e6b6";
+}
+
+.uniui-arrowup:before {
+ content: "\e6b6";
+}
+
+.uniui-left:before {
+ content: "\e6b7";
+}
+
+.uniui-arrowleft:before {
+ content: "\e6b7";
+}
+
+.uniui-eye:before {
+ content: "\e651";
+}
+
+.uniui-eye-filled:before {
+ content: "\e66a";
+}
+
+.uniui-eye-slash:before {
+ content: "\e6b3";
+}
+
+.uniui-eye-slash-filled:before {
+ content: "\e6b4";
+}
+
+.uniui-info-filled:before {
+ content: "\e649";
+}
+
+.uniui-reload:before {
+ content: "\e6b2";
+}
+
+.uniui-micoff-filled:before {
+ content: "\e6b0";
+}
+
+.uniui-map-pin-ellipse:before {
+ content: "\e6ac";
+}
+
+.uniui-map-pin:before {
+ content: "\e6ad";
+}
+
+.uniui-location:before {
+ content: "\e6ae";
+}
+
+.uniui-starhalf:before {
+ content: "\e683";
+}
+
+.uniui-star:before {
+ content: "\e688";
+}
+
+.uniui-star-filled:before {
+ content: "\e68f";
+}
+
+.uniui-calendar:before {
+ content: "\e6a0";
+}
+
+.uniui-fire:before {
+ content: "\e6a1";
+}
+
+.uniui-medal:before {
+ content: "\e6a2";
+}
+
+.uniui-font:before {
+ content: "\e6a3";
+}
+
+.uniui-gift:before {
+ content: "\e6a4";
+}
+
+.uniui-link:before {
+ content: "\e6a5";
+}
+
+.uniui-notification:before {
+ content: "\e6a6";
+}
+
+.uniui-staff:before {
+ content: "\e6a7";
+}
+
+.uniui-vip:before {
+ content: "\e6a8";
+}
+
+.uniui-folder-add:before {
+ content: "\e6a9";
+}
+
+.uniui-tune:before {
+ content: "\e6aa";
+}
+
+.uniui-auth:before {
+ content: "\e6ab";
+}
+
+.uniui-person:before {
+ content: "\e699";
+}
+
+.uniui-email-filled:before {
+ content: "\e69a";
+}
+
+.uniui-phone-filled:before {
+ content: "\e69b";
+}
+
+.uniui-phone:before {
+ content: "\e69c";
+}
+
+.uniui-email:before {
+ content: "\e69e";
+}
+
+.uniui-personadd:before {
+ content: "\e69f";
+}
+
+.uniui-chatboxes-filled:before {
+ content: "\e692";
+}
+
+.uniui-contact:before {
+ content: "\e693";
+}
+
+.uniui-chatbubble-filled:before {
+ content: "\e694";
+}
+
+.uniui-contact-filled:before {
+ content: "\e695";
+}
+
+.uniui-chatboxes:before {
+ content: "\e696";
+}
+
+.uniui-chatbubble:before {
+ content: "\e697";
+}
+
+.uniui-upload-filled:before {
+ content: "\e68e";
+}
+
+.uniui-upload:before {
+ content: "\e690";
+}
+
+.uniui-weixin:before {
+ content: "\e691";
+}
+
+.uniui-compose:before {
+ content: "\e67f";
+}
+
+.uniui-qq:before {
+ content: "\e680";
+}
+
+.uniui-download-filled:before {
+ content: "\e681";
+}
+
+.uniui-pyq:before {
+ content: "\e682";
+}
+
+.uniui-sound:before {
+ content: "\e684";
+}
+
+.uniui-trash-filled:before {
+ content: "\e685";
+}
+
+.uniui-sound-filled:before {
+ content: "\e686";
+}
+
+.uniui-trash:before {
+ content: "\e687";
+}
+
+.uniui-videocam-filled:before {
+ content: "\e689";
+}
+
+.uniui-spinner-cycle:before {
+ content: "\e68a";
+}
+
+.uniui-weibo:before {
+ content: "\e68b";
+}
+
+.uniui-videocam:before {
+ content: "\e68c";
+}
+
+.uniui-download:before {
+ content: "\e68d";
+}
+
+.uniui-help:before {
+ content: "\e679";
+}
+
+.uniui-navigate-filled:before {
+ content: "\e67a";
+}
+
+.uniui-plusempty:before {
+ content: "\e67b";
+}
+
+.uniui-smallcircle:before {
+ content: "\e67c";
+}
+
+.uniui-minus-filled:before {
+ content: "\e67d";
+}
+
+.uniui-micoff:before {
+ content: "\e67e";
+}
+
+.uniui-closeempty:before {
+ content: "\e66c";
+}
+
+.uniui-clear:before {
+ content: "\e66d";
+}
+
+.uniui-navigate:before {
+ content: "\e66e";
+}
+
+.uniui-minus:before {
+ content: "\e66f";
+}
+
+.uniui-image:before {
+ content: "\e670";
+}
+
+.uniui-mic:before {
+ content: "\e671";
+}
+
+.uniui-paperplane:before {
+ content: "\e672";
+}
+
+.uniui-close:before {
+ content: "\e673";
+}
+
+.uniui-help-filled:before {
+ content: "\e674";
+}
+
+.uniui-paperplane-filled:before {
+ content: "\e675";
+}
+
+.uniui-plus:before {
+ content: "\e676";
+}
+
+.uniui-mic-filled:before {
+ content: "\e677";
+}
+
+.uniui-image-filled:before {
+ content: "\e678";
+}
+
+.uniui-locked-filled:before {
+ content: "\e668";
+}
+
+.uniui-info:before {
+ content: "\e669";
+}
+
+.uniui-locked:before {
+ content: "\e66b";
+}
+
+.uniui-camera-filled:before {
+ content: "\e658";
+}
+
+.uniui-chat-filled:before {
+ content: "\e659";
+}
+
+.uniui-camera:before {
+ content: "\e65a";
+}
+
+.uniui-circle:before {
+ content: "\e65b";
+}
+
+.uniui-checkmarkempty:before {
+ content: "\e65c";
+}
+
+.uniui-chat:before {
+ content: "\e65d";
+}
+
+.uniui-circle-filled:before {
+ content: "\e65e";
+}
+
+.uniui-flag:before {
+ content: "\e65f";
+}
+
+.uniui-flag-filled:before {
+ content: "\e660";
+}
+
+.uniui-gear-filled:before {
+ content: "\e661";
+}
+
+.uniui-home:before {
+ content: "\e662";
+}
+
+.uniui-home-filled:before {
+ content: "\e663";
+}
+
+.uniui-gear:before {
+ content: "\e664";
+}
+
+.uniui-smallcircle-filled:before {
+ content: "\e665";
+}
+
+.uniui-map-filled:before {
+ content: "\e666";
+}
+
+.uniui-map:before {
+ content: "\e667";
+}
+
+.uniui-refresh-filled:before {
+ content: "\e656";
+}
+
+.uniui-refresh:before {
+ content: "\e657";
+}
+
+.uniui-cloud-upload:before {
+ content: "\e645";
+}
+
+.uniui-cloud-download-filled:before {
+ content: "\e646";
+}
+
+.uniui-cloud-download:before {
+ content: "\e647";
+}
+
+.uniui-cloud-upload-filled:before {
+ content: "\e648";
+}
+
+.uniui-redo:before {
+ content: "\e64a";
+}
+
+.uniui-images-filled:before {
+ content: "\e64b";
+}
+
+.uniui-undo-filled:before {
+ content: "\e64c";
+}
+
+.uniui-more:before {
+ content: "\e64d";
+}
+
+.uniui-more-filled:before {
+ content: "\e64e";
+}
+
+.uniui-undo:before {
+ content: "\e64f";
+}
+
+.uniui-images:before {
+ content: "\e650";
+}
+
+.uniui-paperclip:before {
+ content: "\e652";
+}
+
+.uniui-settings:before {
+ content: "\e653";
+}
+
+.uniui-search:before {
+ content: "\e654";
+}
+
+.uniui-redo-filled:before {
+ content: "\e655";
+}
+
+.uniui-list:before {
+ content: "\e644";
+}
+
+.uniui-mail-open-filled:before {
+ content: "\e63a";
+}
+
+.uniui-hand-down-filled:before {
+ content: "\e63c";
+}
+
+.uniui-hand-down:before {
+ content: "\e63d";
+}
+
+.uniui-hand-up-filled:before {
+ content: "\e63e";
+}
+
+.uniui-hand-up:before {
+ content: "\e63f";
+}
+
+.uniui-heart-filled:before {
+ content: "\e641";
+}
+
+.uniui-mail-open:before {
+ content: "\e643";
+}
+
+.uniui-heart:before {
+ content: "\e639";
+}
+
+.uniui-loop:before {
+ content: "\e633";
+}
+
+.uniui-pulldown:before {
+ content: "\e632";
+}
+
+.uniui-scan:before {
+ content: "\e62a";
+}
+
+.uniui-bars:before {
+ content: "\e627";
+}
+
+.uniui-cart-filled:before {
+ content: "\e629";
+}
+
+.uniui-checkbox:before {
+ content: "\e62b";
+}
+
+.uniui-checkbox-filled:before {
+ content: "\e62c";
+}
+
+.uniui-shop:before {
+ content: "\e62f";
+}
+
+.uniui-headphones:before {
+ content: "\e630";
+}
+
+.uniui-cart:before {
+ content: "\e631";
+}
diff --git a/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
new file mode 100644
index 0000000..835f33b
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
Binary files differ
diff --git a/minipro_standard/uni_modules/uni-icons/package.json b/minipro_standard/uni_modules/uni-icons/package.json
new file mode 100644
index 0000000..d1c4e77
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/package.json
@@ -0,0 +1,86 @@
+{
+ "id": "uni-icons",
+ "displayName": "uni-icons 鍥炬爣",
+ "version": "1.3.5",
+ "description": "鍥炬爣缁勪欢锛岀敤浜庡睍绀虹Щ鍔ㄧ甯歌鐨勫浘鏍囷紝鍙嚜瀹氫箟棰滆壊銆佸ぇ灏忋��",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "icon",
+ "鍥炬爣"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "^3.2.14"
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "鍓嶇缁勪欢",
+ "閫氱敤缁勪欢"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "鏃�",
+ "data": "鏃�",
+ "permissions": "鏃�"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "寰俊娴忚鍣�(Android)": "y",
+ "QQ娴忚鍣�(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "灏忕▼搴�": {
+ "寰俊": "y",
+ "闃块噷": "y",
+ "鐧惧害": "y",
+ "瀛楄妭璺冲姩": "y",
+ "QQ": "y"
+ },
+ "蹇簲鐢�": {
+ "鍗庝负": "u",
+ "鑱旂洘": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-icons/readme.md b/minipro_standard/uni_modules/uni-icons/readme.md
new file mode 100644
index 0000000..86234ba
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-icons/readme.md
@@ -0,0 +1,8 @@
+## Icons 鍥炬爣
+> **缁勪欢鍚嶏細uni-icons**
+> 浠g爜鍧楋細 `uIcons`
+
+鐢ㄤ簬灞曠ず icons 鍥炬爣 銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-icons)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839
diff --git a/minipro_standard/uni_modules/uni-scss/changelog.md b/minipro_standard/uni_modules/uni-scss/changelog.md
new file mode 100644
index 0000000..b863bb0
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/changelog.md
@@ -0,0 +1,8 @@
+## 1.0.3锛�2022-01-21锛�
+- 浼樺寲 缁勪欢绀轰緥
+## 1.0.2锛�2021-11-22锛�
+- 淇 / 绗﹀彿鍦� vue 涓嶅悓鐗堟湰鍏煎闂寮曡捣鐨勬姤閿欓棶棰�
+## 1.0.1锛�2021-11-22锛�
+- 淇 vue3涓璼css璇硶鍏煎闂
+## 1.0.0锛�2021-11-18锛�
+- init
diff --git a/minipro_standard/uni_modules/uni-scss/index.scss b/minipro_standard/uni_modules/uni-scss/index.scss
new file mode 100644
index 0000000..1744a5f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/index.scss
@@ -0,0 +1 @@
+@import './styles/index.scss';
diff --git a/minipro_standard/uni_modules/uni-scss/package.json b/minipro_standard/uni_modules/uni-scss/package.json
new file mode 100644
index 0000000..7cc0ccb
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/package.json
@@ -0,0 +1,82 @@
+{
+ "id": "uni-scss",
+ "displayName": "uni-scss 杈呭姪鏍峰紡",
+ "version": "1.0.3",
+ "description": "uni-sass鏄痷ni-ui鎻愪緵鐨勪竴濂楀叏灞�鏍峰紡 锛岄�氳繃涓�浜涚畝鍗曠殑绫诲悕鍜宻ass鍙橀噺锛屽疄鐜扮畝鍗曠殑椤甸潰甯冨眬鎿嶄綔锛屾瘮濡傞鑹层�佽竟璺濄�佸渾瑙掔瓑銆�",
+ "keywords": [
+ "uni-scss",
+ "uni-ui",
+ "杈呭姪鏍峰紡"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "category": [
+ "JS SDK",
+ "閫氱敤 SDK"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "鏃�",
+ "data": "鏃�",
+ "permissions": "鏃�"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "寰俊娴忚鍣�(Android)": "y",
+ "QQ娴忚鍣�(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "灏忕▼搴�": {
+ "寰俊": "y",
+ "闃块噷": "y",
+ "鐧惧害": "y",
+ "瀛楄妭璺冲姩": "y",
+ "QQ": "y"
+ },
+ "蹇簲鐢�": {
+ "鍗庝负": "n",
+ "鑱旂洘": "n"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/minipro_standard/uni_modules/uni-scss/readme.md b/minipro_standard/uni_modules/uni-scss/readme.md
new file mode 100644
index 0000000..b7d1c25
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/readme.md
@@ -0,0 +1,4 @@
+`uni-sass` 鏄� `uni-ui`鎻愪緵鐨勪竴濂楀叏灞�鏍峰紡 锛岄�氳繃涓�浜涚畝鍗曠殑绫诲悕鍜宍sass`鍙橀噺锛屽疄鐜扮畝鍗曠殑椤甸潰甯冨眬鎿嶄綔锛屾瘮濡傞鑹层�佽竟璺濄�佸渾瑙掔瓑銆�
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-sass)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/index.scss b/minipro_standard/uni_modules/uni-scss/styles/index.scss
new file mode 100644
index 0000000..ffac4fe
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/index.scss
@@ -0,0 +1,7 @@
+@import './setting/_variables.scss';
+@import './setting/_border.scss';
+@import './setting/_color.scss';
+@import './setting/_space.scss';
+@import './setting/_radius.scss';
+@import './setting/_text.scss';
+@import './setting/_styles.scss';
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss
new file mode 100644
index 0000000..12a11c3
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss
@@ -0,0 +1,3 @@
+.uni-border {
+ border: 1px $uni-border-1 solid;
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss
new file mode 100644
index 0000000..1ededd9
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss
@@ -0,0 +1,66 @@
+
+// TODO 鏆傛椂涓嶉渶瑕� class 锛岄渶瑕佺敤鎴蜂娇鐢ㄥ彉閲忓疄鐜� 锛屽鏋滀娇鐢ㄧ被鍚嶅叾瀹炲苟涓嶆帹鑽�
+// @mixin get-styles($k,$c) {
+// @if $k == size or $k == weight{
+// font-#{$k}:#{$c}
+// }@else{
+// #{$k}:#{$c}
+// }
+// }
+$uni-ui-color:(
+ // 涓昏壊
+ primary: $uni-primary,
+ primary-disable: $uni-primary-disable,
+ primary-light: $uni-primary-light,
+ // 杈呭姪鑹�
+ success: $uni-success,
+ success-disable: $uni-success-disable,
+ success-light: $uni-success-light,
+ warning: $uni-warning,
+ warning-disable: $uni-warning-disable,
+ warning-light: $uni-warning-light,
+ error: $uni-error,
+ error-disable: $uni-error-disable,
+ error-light: $uni-error-light,
+ info: $uni-info,
+ info-disable: $uni-info-disable,
+ info-light: $uni-info-light,
+ // 涓�ц壊
+ main-color: $uni-main-color,
+ base-color: $uni-base-color,
+ secondary-color: $uni-secondary-color,
+ extra-color: $uni-extra-color,
+ // 鑳屾櫙鑹�
+ bg-color: $uni-bg-color,
+ // 杈规棰滆壊
+ border-1: $uni-border-1,
+ border-2: $uni-border-2,
+ border-3: $uni-border-3,
+ border-4: $uni-border-4,
+ // 榛戣壊
+ black:$uni-black,
+ // 鐧借壊
+ white:$uni-white,
+ // 閫忔槑
+ transparent:$uni-transparent
+) !default;
+@each $key, $child in $uni-ui-color {
+ .uni-#{"" + $key} {
+ color: $child;
+ }
+ .uni-#{"" + $key}-bg {
+ background-color: $child;
+ }
+}
+.uni-shadow-sm {
+ box-shadow: $uni-shadow-sm;
+}
+.uni-shadow-base {
+ box-shadow: $uni-shadow-base;
+}
+.uni-shadow-lg {
+ box-shadow: $uni-shadow-lg;
+}
+.uni-mask {
+ background-color:$uni-mask;
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss
new file mode 100644
index 0000000..9a0428b
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss
@@ -0,0 +1,55 @@
+@mixin radius($r,$d:null ,$important: false){
+ $radius-value:map-get($uni-radius, $r) if($important, !important, null);
+ // Key exists within the $uni-radius variable
+ @if (map-has-key($uni-radius, $r) and $d){
+ @if $d == t {
+ border-top-left-radius:$radius-value;
+ border-top-right-radius:$radius-value;
+ }@else if $d == r {
+ border-top-right-radius:$radius-value;
+ border-bottom-right-radius:$radius-value;
+ }@else if $d == b {
+ border-bottom-left-radius:$radius-value;
+ border-bottom-right-radius:$radius-value;
+ }@else if $d == l {
+ border-top-left-radius:$radius-value;
+ border-bottom-left-radius:$radius-value;
+ }@else if $d == tl {
+ border-top-left-radius:$radius-value;
+ }@else if $d == tr {
+ border-top-right-radius:$radius-value;
+ }@else if $d == br {
+ border-bottom-right-radius:$radius-value;
+ }@else if $d == bl {
+ border-bottom-left-radius:$radius-value;
+ }
+ }@else{
+ border-radius:$radius-value;
+ }
+}
+
+@each $key, $child in $uni-radius {
+ @if($key){
+ .uni-radius-#{"" + $key} {
+ @include radius($key)
+ }
+ }@else{
+ .uni-radius {
+ @include radius($key)
+ }
+ }
+}
+
+@each $direction in t, r, b, l,tl, tr, br, bl {
+ @each $key, $child in $uni-radius {
+ @if($key){
+ .uni-radius-#{"" + $direction}-#{"" + $key} {
+ @include radius($key,$direction,false)
+ }
+ }@else{
+ .uni-radius-#{$direction} {
+ @include radius($key,$direction,false)
+ }
+ }
+ }
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss
new file mode 100644
index 0000000..3c89528
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss
@@ -0,0 +1,56 @@
+
+@mixin fn($space,$direction,$size,$n) {
+ @if $n {
+ #{$space}-#{$direction}: #{$size*$uni-space-root}px
+ } @else {
+ #{$space}-#{$direction}: #{-$size*$uni-space-root}px
+ }
+}
+@mixin get-styles($direction,$i,$space,$n){
+ @if $direction == t {
+ @include fn($space, top,$i,$n);
+ }
+ @if $direction == r {
+ @include fn($space, right,$i,$n);
+ }
+ @if $direction == b {
+ @include fn($space, bottom,$i,$n);
+ }
+ @if $direction == l {
+ @include fn($space, left,$i,$n);
+ }
+ @if $direction == x {
+ @include fn($space, left,$i,$n);
+ @include fn($space, right,$i,$n);
+ }
+ @if $direction == y {
+ @include fn($space, top,$i,$n);
+ @include fn($space, bottom,$i,$n);
+ }
+ @if $direction == a {
+ @if $n {
+ #{$space}:#{$i*$uni-space-root}px;
+ } @else {
+ #{$space}:#{-$i*$uni-space-root}px;
+ }
+ }
+}
+
+@each $orientation in m,p {
+ $space: margin;
+ @if $orientation == m {
+ $space: margin;
+ } @else {
+ $space: padding;
+ }
+ @for $i from 0 through 16 {
+ @each $direction in t, r, b, l, x, y, a {
+ .uni-#{$orientation}#{$direction}-#{$i} {
+ @include get-styles($direction,$i,$space,true);
+ }
+ .uni-#{$orientation}#{$direction}-n#{$i} {
+ @include get-styles($direction,$i,$space,false);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss
new file mode 100644
index 0000000..689afec
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss
@@ -0,0 +1,167 @@
+/* #ifndef APP-NVUE */
+
+$-color-white:#fff;
+$-color-black:#000;
+@mixin base-style($color) {
+ color: #fff;
+ background-color: $color;
+ border-color: mix($-color-black, $color, 8%);
+ &:not([hover-class]):active {
+ background: mix($-color-black, $color, 10%);
+ border-color: mix($-color-black, $color, 20%);
+ color: $-color-white;
+ outline: none;
+ }
+}
+@mixin is-color($color) {
+ @include base-style($color);
+ &[loading] {
+ @include base-style($color);
+ &::before {
+ margin-right:5px;
+ }
+ }
+ &[disabled] {
+ &,
+ &[loading],
+ &:not([hover-class]):active {
+ color: $-color-white;
+ border-color: mix(darken($color,10%), $-color-white);
+ background-color: mix($color, $-color-white);
+ }
+ }
+
+}
+@mixin base-plain-style($color) {
+ color:$color;
+ background-color: mix($-color-white, $color, 90%);
+ border-color: mix($-color-white, $color, 70%);
+ &:not([hover-class]):active {
+ background: mix($-color-white, $color, 80%);
+ color: $color;
+ outline: none;
+ border-color: mix($-color-white, $color, 50%);
+ }
+}
+@mixin is-plain($color){
+ &[plain] {
+ @include base-plain-style($color);
+ &[loading] {
+ @include base-plain-style($color);
+ &::before {
+ margin-right:5px;
+ }
+ }
+ &[disabled] {
+ &,
+ &:active {
+ color: mix($-color-white, $color, 40%);
+ background-color: mix($-color-white, $color, 90%);
+ border-color: mix($-color-white, $color, 80%);
+ }
+ }
+ }
+}
+
+
+.uni-btn {
+ margin: 5px;
+ color: #393939;
+ border:1px solid #ccc;
+ font-size: 16px;
+ font-weight: 200;
+ background-color: #F9F9F9;
+ // TODO 鏆傛椂澶勭悊杈规闅愯棌涓�杈圭殑闂
+ overflow: visible;
+ &::after{
+ border: none;
+ }
+
+ &:not([type]),&[type=default] {
+ color: #999;
+ &[loading] {
+ background: none;
+ &::before {
+ margin-right:5px;
+ }
+ }
+
+
+
+ &[disabled]{
+ color: mix($-color-white, #999, 60%);
+ &,
+ &[loading],
+ &:active {
+ color: mix($-color-white, #999, 60%);
+ background-color: mix($-color-white,$-color-black , 98%);
+ border-color: mix($-color-white, #999, 85%);
+ }
+ }
+
+ &[plain] {
+ color: #999;
+ background: none;
+ border-color: $uni-border-1;
+ &:not([hover-class]):active {
+ background: none;
+ color: mix($-color-white, $-color-black, 80%);
+ border-color: mix($-color-white, $-color-black, 90%);
+ outline: none;
+ }
+ &[disabled]{
+ &,
+ &[loading],
+ &:active {
+ background: none;
+ color: mix($-color-white, #999, 60%);
+ border-color: mix($-color-white, #999, 85%);
+ }
+ }
+ }
+ }
+
+ &:not([hover-class]):active {
+ color: mix($-color-white, $-color-black, 50%);
+ }
+
+ &[size=mini] {
+ font-size: 16px;
+ font-weight: 200;
+ border-radius: 8px;
+ }
+
+
+
+ &.uni-btn-small {
+ font-size: 14px;
+ }
+ &.uni-btn-mini {
+ font-size: 12px;
+ }
+
+ &.uni-btn-radius {
+ border-radius: 999px;
+ }
+ &[type=primary] {
+ @include is-color($uni-primary);
+ @include is-plain($uni-primary)
+ }
+ &[type=success] {
+ @include is-color($uni-success);
+ @include is-plain($uni-success)
+ }
+ &[type=error] {
+ @include is-color($uni-error);
+ @include is-plain($uni-error)
+ }
+ &[type=warning] {
+ @include is-color($uni-warning);
+ @include is-plain($uni-warning)
+ }
+ &[type=info] {
+ @include is-color($uni-info);
+ @include is-plain($uni-info)
+ }
+}
+/* #endif */
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss
new file mode 100644
index 0000000..a34d08f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss
@@ -0,0 +1,24 @@
+@mixin get-styles($k,$c) {
+ @if $k == size or $k == weight{
+ font-#{$k}:#{$c}
+ }@else{
+ #{$k}:#{$c}
+ }
+}
+
+@each $key, $child in $uni-headings {
+ /* #ifndef APP-NVUE */
+ .uni-#{$key} {
+ @each $k, $c in $child {
+ @include get-styles($k,$c)
+ }
+ }
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ .container .uni-#{$key} {
+ @each $k, $c in $child {
+ @include get-styles($k,$c)
+ }
+ }
+ /* #endif */
+}
diff --git a/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss b/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss
new file mode 100644
index 0000000..557d3d7
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss
@@ -0,0 +1,146 @@
+// @use "sass:math";
+@import '../tools/functions.scss';
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2 !default;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px !default;
+$uni-radius: () !default;
+// 杈规鍗婂緞鏂偣
+$uni-radius: map-deep-merge(
+ (
+ 0: 0,
+ // TODO 褰撳墠鐗堟湰鏆傛椂涓嶆敮鎸� sm 灞炴��
+ // 'sm': math.div($uni-radius-root, 2),
+ null: $uni-radius-root,
+ 'lg': $uni-radius-root * 2,
+ 'xl': $uni-radius-root * 6,
+ 'pill': 9999px,
+ 'circle': 50%
+ ),
+ $uni-radius
+);
+// 瀛椾綋瀹舵棌
+$body-font-family: 'Roboto', sans-serif !default;
+// 鏂囨湰
+$heading-font-family: $body-font-family !default;
+$uni-headings: () !default;
+$letterSpacing: -0.01562em;
+$uni-headings: map-deep-merge(
+ (
+ 'h1': (
+ size: 32px,
+ weight: 300,
+ line-height: 50px,
+ // letter-spacing:-0.01562em
+ ),
+ 'h2': (
+ size: 28px,
+ weight: 300,
+ line-height: 40px,
+ // letter-spacing: -0.00833em
+ ),
+ 'h3': (
+ size: 24px,
+ weight: 400,
+ line-height: 32px,
+ // letter-spacing: normal
+ ),
+ 'h4': (
+ size: 20px,
+ weight: 400,
+ line-height: 30px,
+ // letter-spacing: 0.00735em
+ ),
+ 'h5': (
+ size: 16px,
+ weight: 400,
+ line-height: 24px,
+ // letter-spacing: normal
+ ),
+ 'h6': (
+ size: 14px,
+ weight: 500,
+ line-height: 18px,
+ // letter-spacing: 0.0125em
+ ),
+ 'subtitle': (
+ size: 12px,
+ weight: 400,
+ line-height: 20px,
+ // letter-spacing: 0.00937em
+ ),
+ 'body': (
+ font-size: 14px,
+ font-weight: 400,
+ line-height: 22px,
+ // letter-spacing: 0.03125em
+ ),
+ 'caption': (
+ 'size': 12px,
+ 'weight': 400,
+ 'line-height': 20px,
+ // 'letter-spacing': 0.03333em,
+ // 'text-transform': false
+ )
+ ),
+ $uni-headings
+);
+
+
+
+// 涓昏壊
+$uni-primary: #2979ff !default;
+$uni-primary-disable:lighten($uni-primary,20%) !default;
+$uni-primary-light: lighten($uni-primary,25%) !default;
+
+// 杈呭姪鑹�
+// 闄や簡涓昏壊澶栫殑鍦烘櫙鑹诧紝闇�瑕佸湪涓嶅悓鐨勫満鏅腑浣跨敤锛堜緥濡傚嵄闄╄壊琛ㄧず鍗遍櫓鐨勬搷浣滐級銆�
+$uni-success: #18bc37 !default;
+$uni-success-disable:lighten($uni-success,20%) !default;
+$uni-success-light: lighten($uni-success,25%) !default;
+
+$uni-warning: #f3a73f !default;
+$uni-warning-disable:lighten($uni-warning,20%) !default;
+$uni-warning-light: lighten($uni-warning,25%) !default;
+
+$uni-error: #e43d33 !default;
+$uni-error-disable:lighten($uni-error,20%) !default;
+$uni-error-light: lighten($uni-error,25%) !default;
+
+$uni-info: #8f939c !default;
+$uni-info-disable:lighten($uni-info,20%) !default;
+$uni-info-light: lighten($uni-info,25%) !default;
+
+// 涓�ц壊
+// 涓�ц壊鐢ㄤ簬鏂囨湰銆佽儗鏅拰杈规棰滆壊銆傞�氳繃杩愮敤涓嶅悓鐨勪腑鎬ц壊锛屾潵琛ㄧ幇灞傛缁撴瀯銆�
+$uni-main-color: #3a3a3a !default; // 涓昏鏂囧瓧
+$uni-base-color: #6a6a6a !default; // 甯歌鏂囧瓧
+$uni-secondary-color: #909399 !default; // 娆¤鏂囧瓧
+$uni-extra-color: #c7c7c7 !default; // 杈呭姪璇存槑
+
+// 杈规棰滆壊
+$uni-border-1: #F0F0F0 !default;
+$uni-border-2: #EDEDED !default;
+$uni-border-3: #DCDCDC !default;
+$uni-border-4: #B9B9B9 !default;
+
+// 甯歌鑹�
+$uni-black: #000000 !default;
+$uni-white: #ffffff !default;
+$uni-transparent: rgba($color: #000000, $alpha: 0) !default;
+
+// 鑳屾櫙鑹�
+$uni-bg-color: #f7f7f7 !default;
+
+/* 姘村钩闂磋窛 */
+$uni-spacing-sm: 8px !default;
+$uni-spacing-base: 15px !default;
+$uni-spacing-lg: 30px !default;
+
+// 闃村奖
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default;
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default;
+
+// 钂欑増
+$uni-mask: rgba($color: #000000, $alpha: 0.4) !default;
diff --git a/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss b/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss
new file mode 100644
index 0000000..ac6f63e
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss
@@ -0,0 +1,19 @@
+// 鍚堝苟 map
+@function map-deep-merge($parent-map, $child-map){
+ $result: $parent-map;
+ @each $key, $child in $child-map {
+ $parent-has-key: map-has-key($result, $key);
+ $parent-value: map-get($result, $key);
+ $parent-type: type-of($parent-value);
+ $child-type: type-of($child);
+ $parent-is-map: $parent-type == map;
+ $child-is-map: $child-type == map;
+
+ @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
+ $result: map-merge($result, ( $key: $child ));
+ }@else {
+ $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
+ }
+ }
+ @return $result;
+};
diff --git a/minipro_standard/uni_modules/uni-scss/theme.scss b/minipro_standard/uni_modules/uni-scss/theme.scss
new file mode 100644
index 0000000..80ee62f
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/theme.scss
@@ -0,0 +1,31 @@
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px;
+// 涓昏壊
+$uni-primary: #2979ff;
+// 杈呭姪鑹�
+$uni-success: #4cd964;
+// 璀﹀憡鑹�
+$uni-warning: #f0ad4e;
+// 閿欒鑹�
+$uni-error: #dd524d;
+// 鎻忚堪鑹�
+$uni-info: #909399;
+// 涓�ц壊
+$uni-main-color: #303133;
+$uni-base-color: #606266;
+$uni-secondary-color: #909399;
+$uni-extra-color: #C0C4CC;
+// 鑳屾櫙鑹�
+$uni-bg-color: #f5f5f5;
+// 杈规棰滆壊
+$uni-border-1: #DCDFE6;
+$uni-border-2: #E4E7ED;
+$uni-border-3: #EBEEF5;
+$uni-border-4: #F2F6FC;
+
+// 甯歌鑹�
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);
diff --git a/minipro_standard/uni_modules/uni-scss/variables.scss b/minipro_standard/uni_modules/uni-scss/variables.scss
new file mode 100644
index 0000000..1c062d4
--- /dev/null
+++ b/minipro_standard/uni_modules/uni-scss/variables.scss
@@ -0,0 +1,62 @@
+@import './styles/setting/_variables.scss';
+// 闂磋窛鍩虹鍊嶆暟
+$uni-space-root: 2;
+// 杈规鍗婂緞榛樿鍊�
+$uni-radius-root:5px;
+
+// 涓昏壊
+$uni-primary: #2979ff;
+$uni-primary-disable:mix(#fff,$uni-primary,50%);
+$uni-primary-light: mix(#fff,$uni-primary,80%);
+
+// 杈呭姪鑹�
+// 闄や簡涓昏壊澶栫殑鍦烘櫙鑹诧紝闇�瑕佸湪涓嶅悓鐨勫満鏅腑浣跨敤锛堜緥濡傚嵄闄╄壊琛ㄧず鍗遍櫓鐨勬搷浣滐級銆�
+$uni-success: #18bc37;
+$uni-success-disable:mix(#fff,$uni-success,50%);
+$uni-success-light: mix(#fff,$uni-success,80%);
+
+$uni-warning: #f3a73f;
+$uni-warning-disable:mix(#fff,$uni-warning,50%);
+$uni-warning-light: mix(#fff,$uni-warning,80%);
+
+$uni-error: #e43d33;
+$uni-error-disable:mix(#fff,$uni-error,50%);
+$uni-error-light: mix(#fff,$uni-error,80%);
+
+$uni-info: #8f939c;
+$uni-info-disable:mix(#fff,$uni-info,50%);
+$uni-info-light: mix(#fff,$uni-info,80%);
+
+// 涓�ц壊
+// 涓�ц壊鐢ㄤ簬鏂囨湰銆佽儗鏅拰杈规棰滆壊銆傞�氳繃杩愮敤涓嶅悓鐨勪腑鎬ц壊锛屾潵琛ㄧ幇灞傛缁撴瀯銆�
+$uni-main-color: #3a3a3a; // 涓昏鏂囧瓧
+$uni-base-color: #6a6a6a; // 甯歌鏂囧瓧
+$uni-secondary-color: #909399; // 娆¤鏂囧瓧
+$uni-extra-color: #c7c7c7; // 杈呭姪璇存槑
+
+// 杈规棰滆壊
+$uni-border-1: #F0F0F0;
+$uni-border-2: #EDEDED;
+$uni-border-3: #DCDCDC;
+$uni-border-4: #B9B9B9;
+
+// 甯歌鑹�
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);
+
+// 鑳屾櫙鑹�
+$uni-bg-color: #f7f7f7;
+
+/* 姘村钩闂磋窛 */
+$uni-spacing-sm: 8px;
+$uni-spacing-base: 15px;
+$uni-spacing-lg: 30px;
+
+// 闃村奖
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5);
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2);
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5);
+
+// 钂欑増
+$uni-mask: rgba($color: #000000, $alpha: 0.4);
diff --git a/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
index 1a25db6..d8a2b69 100644
--- a/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
+++ b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
@@ -49,9 +49,9 @@
const preLoadScreen = this.uList.preLoadScreen
const windowHeight = this.sys.windowHeight
if(n <= windowHeight * preLoadScreen) {
- this.parent.updateOffsetFromChild(0)
+ // this.parent.updateOffsetFromChild(0)
} else if (this.rect.top <= n - windowHeight * preLoadScreen) {
- this.parent.updateOffsetFromChild(this.rect.top)
+ // this.parent.updateOffsetFromChild(this.rect.top)
}
}
// #endif
diff --git a/minipro_standard/util/api/ExWarehouse.js b/minipro_standard/util/api/ExWarehouse.js
new file mode 100644
index 0000000..a99e79b
--- /dev/null
+++ b/minipro_standard/util/api/ExWarehouse.js
@@ -0,0 +1,252 @@
+const http = uni.$u.http
+
+// 鍑哄叆搴撹鎯�
+export function getList(params) {
+ return http.get('/ext/wOutboundExt/findById', { params })
+}
+// export function getList(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/findById',
+// method: 'get',
+// params
+// })
+// }
+
+// 鍑哄簱/鍏ュ簱鎵弿绡瓙鐮� - H5
+export function outScanAppliances(params) {
+ return http.get('/ext/wOutboundExt/outScanAppliances', { params })
+}
+// export function outScanAppliances(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/outScanAppliances',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁杞簱鍗曡幏鍙栧嚭搴撲俊鎭� - H5
+export function getOutByWTransferId(params) {
+ return http.get('/ext/wOutboundExt/getOutByWTransferId', { params })
+}
+// export function getOutByWTransferId(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/getOutByWTransferId',
+// method: 'get',
+// params
+// })
+// }
+
+// 鍑哄簱鍗曚繚瀛�
+export function saveOut(data) {
+ return http.post('/ext/wOutboundExt/saveOut', data)
+}
+// export function saveOut(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/saveOut',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍏ュ簱鍗曚繚瀛�
+export function saveIn(data) {
+ return http.post('/ext/wOutboundExt/saveIn', data)
+}
+// export function saveIn(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/saveIn',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁杞簱鍗曡幏鍙栧叆搴撲俊鎭�
+export function getInByWTransferId(params) {
+ return http.get('/ext/wOutboundExt/getInByWTransferId', { params })
+}
+// export function getInByWTransferId(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/getInByWTransferId',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ璐т綅淇℃伅
+export function getLocationInfo(id) {
+ return http.get(`/ext/warehouseLocationExt/${id}`)
+}
+// export function getLocationInfo(id: string | number): Promise<any> {
+// return httpRequest({
+// url: `ext/warehouseLocationExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ璐т綅淇℃伅
+export function finishedInBill(params) {
+ return http.get('/ext/wOutboundExt/finishedInBill', { params })
+}
+// export function finishedInBill(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/finishedInBill',
+// method: 'get',
+// params
+// })
+// }
+
+// 鑾峰彇杞簱鍗曚俊鎭�
+export function wTransferForInOut(params) {
+ return http.get('/ext/wOutboundExt/wTransferForInOut', { params })
+}
+// export function wTransferForInOut(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/wTransferForInOut',
+// method: 'get',
+// params
+// })
+// }
+
+// 鑾峰彇鍑哄叆搴撳崟淇℃伅
+export function wOutBoundForInOut(params) {
+ return http.get('/ext/wOutboundExt/wOutBoundForInOut', { params })
+}
+// export function wOutBoundForInOut(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/wOutBoundForInOut',
+// method: 'get',
+// params
+// })
+// }
+
+// 鑾峰彇杞簱鍗曚俊鎭�
+export function saveOutCK (data) {
+ return request.post('/ext/wOutboundExt/saveOut', data)
+}
+// export function saveOutCK(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/saveOut',
+// method: 'post',
+// data
+// })
+// }
+
+// 鎻愪氦杞簱鍗曞嚭鍏ュ簱
+export function wTransferForInOutUpload(params) {
+ return http.get('/ext/wTransferExt/wTransferForInOutUpload', { params })
+}
+// export function wTransferForInOutUpload(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/wTransferForInOutUpload',
+// method: 'get',
+// params
+// })
+// }
+
+// 璋冩暣鍏ュ簱
+export function wOutBoundForStockUp (data) {
+ return request.post('/ext/wOutboundExt/wOutBoundForStockUp', data)
+}
+// export function wOutBoundForStockUp(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/createForStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍑哄叆搴撲笟鍔″鐞嗘彁浜�
+export function wOutBoundForUpload(params) {
+ return http.get('/ext/wOutboundExt/wOutBoundForUpload', { params })
+}
+// export function wOutBoundForUpload(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/wOutBoundForUpload',
+// method: 'get',
+// params
+// })
+// }
+
+// 鐗╂枡鍒嗛厤淇℃伅鍒嗛〉鏌ヨ
+export function materialDistributeExt (data) {
+ return request.post('/ext/materialDistributeExt/page', data)
+}
+// export function materialDistributeExt(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/materialDistributeExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁鐗╂枡涓婚敭鏌ヨ鐗╂枡鍒嗛厤鏁版嵁
+export function getMaterialItem(params) {
+ return http.get('/ext/materialDistributeExt/findByMaterialId', { params })
+}
+// export function getMaterialItem(params: any): Promise<any> {
+// return httpRequest({
+// url: `ext/materialDistributeExt/findByMaterialId`,
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁鐗╂枡鍒嗛厤涓婚敭鏌ヨ
+export function getListByMaterialId(params) {
+ return http.get('/ext/proceduresExt/getListByMaterialId', { params })
+}
+// export function getListByMaterialId(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/proceduresExt/getListByMaterialId',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁杞簱鍗曟煡璇㈠簱瀛�
+export function choiceStockPageByTransfer (data) {
+ return request.post('/ext/wStockExt/choiceStockPageByTransfer', data)
+}
+// export function choiceStockPageByTransfer(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wStockExt/choiceStockPageByTransfer',
+// method: 'post',
+// data
+// })
+// }
+
+// 杞簱鍑哄簱涓氬姟 - H5
+export function transferToOutNew (data) {
+ return request.post('/ext/wTransferExt/transferToOutNew', data)
+}
+// export function transferToOutNew(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/transferToOutNew',
+// method: 'post',
+// data
+// })
+// }
+
+// 杞簱鍏ュ簱涓氬姟 - H5
+export function transferToInNew (data) {
+ return request.post('/ext/wTransferExt/transferToInNew', data)
+}
+// export function transferToInNew(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wTransferExt/transferToInNew',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁渚涢渶璁″垝鏌ヨ鍙敤搴撳瓨
+export function getStockByPlansForStandard (data) {
+ return request.post('/ext/workorderRecordExt/getStockByPlansForStandard', data)
+}
+// export function getStockByPlansForStandard(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/workorderRecordExt/getStockByPlansForStandard',
+// method: 'post',
+// data
+// })
+// }
\ No newline at end of file
diff --git a/minipro_standard/util/api/PersonalAPI.js b/minipro_standard/util/api/PersonalAPI.js
new file mode 100644
index 0000000..51e17d8
--- /dev/null
+++ b/minipro_standard/util/api/PersonalAPI.js
@@ -0,0 +1,36 @@
+const request = uni.$u.http
+
+// 淇敼褰撳墠鐢ㄦ埛瀵嗙爜
+export function updatePwd (data) {
+ return request.post('/system/updatePwd', data)
+}
+// export function updatePwd(data: any): Promise<any> {
+// return httpRequest({
+// url: 'system/updatePwd',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍒囨崲褰撳墠鍏徃绾х粍缁�
+export function changeCom (id) {
+ return request.get(`/ext/departmentExt/changeCom/${id}`)
+}
+// export function changeCom(id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/departmentExt/changeCom/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏉′欢鏌ヨ浼佷笟鍏ㄩ儴閮ㄩ棬
+export function getDepartmentListByConditon (data) {
+ return request.post('/ext/departmentExt/getDepartmentListByConditon', data)
+}
+// export function getDepartmentListByConditon(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/departmentExt/getDepartmentListByConditon',
+// method: 'post',
+// data
+// })
+// }
diff --git a/minipro_standard/util/api/PlanningAPI.js b/minipro_standard/util/api/PlanningAPI.js
new file mode 100644
index 0000000..f68a57c
--- /dev/null
+++ b/minipro_standard/util/api/PlanningAPI.js
@@ -0,0 +1,213 @@
+const request = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList (data) {
+ return request.post('/ext/plansExt/page', data)
+}
+// export function getList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/plansExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁id鏌ヨ
+export function queryByID (id) {
+ return request.get(`/ext/plansExt/h5/${id}`)
+}
+// export function queryByID(id: any): Promise<any> {
+// return httpRequest({
+// url: `/ext/plansExt/h5/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏌ヨ缁熻鍒楄〃鏁伴噺
+export function pageCount (data) {
+ return request.post('/ext/plansExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/plansExt/pageCount',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ宸ュ簭(涓汉)
+export function getWorkingProcedure (data) {
+ return request.post('/ext/proceduresExt/page', data)
+}
+// export function getWorkingProcedure(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/proceduresExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鍙戝竷璁″垝
+export function getWorkingProcedure (data) {
+ return request.post('/ext/plansExt/publishById', data)
+}
+// export function publishById(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/plansExt/publishById',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鍒嗛厤璁″垝
+export function distributeById (data) {
+ return request.post('/ext/plansExt/distributeById', data)
+}
+// export function distributeById(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/plansExt/distributeById',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鍏ㄩ儴鑼冨洿鍐呯殑鍏ㄩ儴宸ュ簭
+export function getSelfList (data) {
+ return request.post('/ext/proceduresExt/getSelfList', data)
+}
+// export function getSelfList(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/proceduresExt/getSelfList',
+// method: 'post',
+// data
+// })
+// }
+
+// 缁堟鍒嗛〉鏌ヨ
+export function ZJPage (data) {
+ return request.post('/ext/endCheckExt/page', data)
+}
+// export function ZJPage(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/endCheckExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 缁堟鏍规嵁ID鏌ヨ
+export function getById (id) {
+ return request.get(`/ext/endCheckExt/${id}`)
+}
+// export function getById(id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/endCheckExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏌ヨ璁惧
+export function getDeviceByCondition (data) {
+ return request.post('/ext/deviceExt/getDeviceByCondition', data)
+}
+// export function getDeviceByCondition(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/deviceExt/getDeviceByCondition',
+// method: 'post',
+// data
+// })
+// }
+
+// 浜哄憳缁戝畾璁惧淇℃伅
+export function getFindAll (data) {
+ return request.post('/ext/userDeviceExt/findAll', data)
+}
+// export function getFindAll(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/userDeviceExt/findAll',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏉′欢鏌ヨ浼佷笟鍏ㄩ儴閮ㄩ棬
+export function deletejy (id) {
+ return request.get(`/ext/workorderCheckExt/delete/${id}`)
+}
+// export function deletejy(id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/workorderCheckExt/delete/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏍规嵁瀵硅薄淇℃伅鏌ヨ
+export function queryOne (data) {
+ return request.post('/ext/salaryParam/queryOne', data)
+}
+// export function queryOne (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/salaryParam/queryOne',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁瀵硅薄淇℃伅鏌ヨ
+export function queryList (data) {
+ return request.post('/ext/salaryParam/queryList', data)
+}
+// export function queryList (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/salaryParam/queryList',
+// method: 'post',
+// data
+// })
+// }
+
+// 涓�閿姤宸�
+export function autoWorkReport (data) {
+ return request.post('/ext/plansExt/autoWorkReport', data)
+}
+// export function autoWorkReport (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/plansExt/autoWorkReport',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁id鏌ヨ
+export function getIdPlansExt (id) {
+ return request.get(`/ext/plansExt/${id}`)
+}
+// export function getIdPlansExt(id: any): Promise<any> {
+// return httpRequest({
+// url: `/ext/plansExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鍒楄〃鏌ヨ
+export function categoryExtList (data) {
+ return request.post('/ext/categoryExt/list', data)
+}
+// export function categoryExtList (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/categoryExt/list',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ鍏ㄩ儴
+export function allUser (data) {
+ return request.post('/ext/companyUserExt/allUser', data)
+}
+// export function allUser (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/companyUserExt/allUser',
+// method: 'post',
+// data
+// })
+// }
diff --git a/minipro_standard/util/api/QualityAPI.js b/minipro_standard/util/api/QualityAPI.js
new file mode 100644
index 0000000..72031cf
--- /dev/null
+++ b/minipro_standard/util/api/QualityAPI.js
@@ -0,0 +1,118 @@
+const request = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function page (data) {
+ return request.post('/ext/workorderCheckExt/page', data)
+}
+// export function page(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍒涘缓妫�楠�
+export function createJY (data) {
+ return request.post('/ext/workorderCheckExt/create', data)
+}
+// export function createJY(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckExt/create',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍒涘缓妫�楠�--鏀�
+export function createStandard (data) {
+ return request.post('/ext/workorderCheckExt/createStandard', data)
+}
+// export function createStandard(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckExt/createStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function getBYid (id) {
+ return request.post(`/ext/workorderCheckExt/${id}`, data)
+}
+// export function getBYid(id: any): Promise<any> {
+// return httpRequest({
+// url: `/ext/workorderCheckExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鑾峰彇鍑哄叆搴撲俊鎭�
+export function findById (id) {
+ return request.post(`/ext/wOutboundExt/findById?id=${id}`, data)
+}
+// export function findById(id: Number): Promise<any> {
+// return httpRequest({
+// url: `/ext/wOutboundExt/findById?id=${id}`,
+// method: 'get'
+// })
+// }
+
+// 鐢熶骇缁堟鏁版嵁鎻愪氦
+export function upload (data) {
+ return request.post('/ext/endCheckExt/upload', data)
+}
+// export function upload (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/endCheckExt/upload',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐢熶骇缁堟鏁版嵁鎻愪氦
+export function uploadTest (data) {
+ return request.post('/ext/endCheckExt/uploadEndCheckNew', data)
+}
+// export function uploadTest (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/endCheckExt/uploadEndCheckNew',
+// method: 'post',
+// data
+// })
+// }
+
+// 宸℃璁板綍鍒涘缓
+export function saveBean (data) {
+ return request.post('/ext/deviceCheckExt/saveBean', data)
+}
+// export function saveBean (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/deviceCheckExt/saveBean',
+// method: 'post',
+// data
+// })
+// }
+
+// 鑾峰彇鏉冮檺鑼冨洿鍐呯殑璁惧鏁版嵁
+export function getDeviceByCondition (data) {
+ return request.post('/ext/deviceExt/getDeviceByCondition', data)
+}
+// export function getDeviceByCondition (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/deviceExt/getDeviceByCondition',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧
+export function getBYid (id) {
+ return request.post(`/ext/deviceExt/${id}`, data)
+}
+// export function getsbInfo (id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/deviceExt/${id}`,
+// method: 'get'
+// })
+// }
diff --git a/minipro_standard/util/api/WorkOrderAPI.js b/minipro_standard/util/api/WorkOrderAPI.js
new file mode 100644
index 0000000..49ba02d
--- /dev/null
+++ b/minipro_standard/util/api/WorkOrderAPI.js
@@ -0,0 +1,652 @@
+const http = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList (data) {
+ return http.post('/ext/workorderExt/page', data)
+}
+// export function getList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/workorderExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 宸ュ崟缁熻鍒楄〃鏁伴噺
+export function pageCount (data) {
+ return http.post('/ext/workorderExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/workorderExt/pageCount',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function queryById (id) {
+ return http.get(`/ext/workorderExt/${id}`)
+}
+// export function queryById(id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/workorderExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鍒嗙被缁勫悎鎺ュ彛2
+export function checkAllList (data) {
+ return http.post('/ext/categoryUnionExt/checkAllList', data)
+}
+// export function checkAllList(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/categoryUnionExt/checkAllList',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁鐢ㄦ埛鏌ヨ - 璁惧鍒楄〃
+export function getListByUser () {
+ return http.post('/ext/userDeviceExt/getListByUser')
+}
+// export function getListByUser (): Promise<any> {
+// return httpRequest({
+// url: 'ext/userDeviceExt/getListByUser',
+// method: 'post'
+// })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鎵�鏈変富缁勭粐涓嬬殑宸ュ簭
+export function warehouseList (data) {
+ return http.post('/ext/warehouseExt/page', data)
+}
+// export function warehouseList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/warehouseExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏
+export function finishedDetail(params) {
+ return http.get('/ext/workorderExt/finishedDetail', { params })
+}
+// export function finishedDetail (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderExt/finishedDetail',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁鏉′欢鏌ヨ宸ヨ
+export function getListByCondition (data) {
+ return http.post('/ext/appliancesExt/getListByCondition', data)
+}
+// export function getListByCondition(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/appliancesExt/getListByCondition',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏂板缓鎶曟枡
+export function createMaterial (data) {
+ return http.post('/ext/workorderRecordExt/createMaterial', data)
+}
+// export function createMaterial(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/createMaterial',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏂板缓鎶曟枡 - 鏍囧噯鐗�
+export function createMaterialStandard (data) {
+ return http.post('/ext/workorderRecordExt/createMaterialStandard', data)
+}
+// export function createMaterialStandard(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/createMaterialStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鑾峰彇鎵弿鏉$爜鍐呭
+export function getBarcodeContent(params) {
+ return http.get('/ext/barcodeParamExt/getBarcodeContent', { params })
+}
+// export function getBarcodeContent(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/barcodeParamExt/getBarcodeContent',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏌ヨ鍏ㄩ儴宸ュ崟鐢熶骇杩囩▼璁板綍
+export function getOrocessRecord (data) {
+ return http.post('/ext/workorderRecordExt/all', data)
+}
+// export function getOrocessRecord(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/all',
+// method: 'post',
+// data
+// })
+// }
+
+// 宸ヨ鍣ㄥ叿鏍规嵁ID鏌ヨ
+export function toolingQueryById (data) {
+ return http.post('/ext/appliancesExt/getListByCondition', data)
+}
+// export function toolingQueryById(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/appliancesExt/getListByCondition',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏂板缓浜у嚭
+export function createProduce (data) {
+ return http.post('/ext/workorderRecordExt/createProduce', data)
+}
+// export function createProduce(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/createProduce',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍒犻櫎浜у嚭/鎶曟枡鍗曟潯璁板綍
+export function deleteCT (id) {
+ return http.get(`/ext/workorderRecordExt/delete/${id}`)
+}
+// export function deleteCT (id: any): Promise<any> {
+// return httpRequest({
+// url: `/ext/workorderRecordExt/delete/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏍规嵁ID淇敼浜у嚭-鎶曟枡鏁伴噺
+export function updateById (data) {
+ return http.post('/ext/workorderRecordExt/updateById', data)
+}
+// export function updateById (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/updateById',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁绡瓙鍒嗙粍缁熻鎶ュ簾鍜屼笉鑹暟閲�
+export function listGroupByAppliance (data) {
+ return http.post('/ext/workorderCheckExt/listGroupByAppliance', data)
+}
+// export function listGroupByAppliance (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckExt/listGroupByAppliance',
+// method: 'post',
+// data
+// })
+// }
+
+// 纭鎶ュ伐
+export function comfirmDone (data) {
+ return http.post('/ext/workorderRecordExt/comfirmDone', data)
+}
+// export function comfirmDone (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/comfirmDone',
+// method: 'post',
+// data
+// })
+// }
+
+// 纭鎶ュ伐 - 鏍囧噯鐗�
+export function comfirmDoneStandard (data) {
+ return http.post('/ext/workorderRecordExt/comfirmDoneStandard', data)
+}
+// export function comfirmDoneStandard (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/comfirmDoneStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁鏉′欢鏌ヨ鎵�鏈夌殑妫�鐐瑰睘鎬�
+export function getJdList (data) {
+ return http.post('/ext/checkAttrExt/getListByCondition', data)
+}
+// export function getJdList (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/checkAttrExt/getListByCondition',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏂板缓鐐规
+export function createDJ (data) {
+ return http.post('/ext/workorderCheckAttrExt/create', data)
+}
+// export function createDJ (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckAttrExt/create',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐐规鍒嗛〉鏌ヨ
+export function pageDJ (data) {
+ return http.post('/ext/workorderCheckAttrExt/page', data)
+}
+// export function pageDJ (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderCheckAttrExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 瀹屽伐鍏ュ簱鎻愪氦
+export function finished(params) {
+ return http.get('/ext/workorderExt/finished', { params })
+}
+// export function finished (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderExt/finished',
+// method: 'get',
+// params
+// })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏璁板綍
+export function saveFinishRecord (data) {
+ return http.post('/ext/workorderExt/saveFinishRecord', data)
+}
+// export function saveFinishRecord (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderExt/saveFinishRecord',
+// method: 'post',
+// data
+// })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏璁板綍 --- 寰呭姙杩涘叆
+export function getFinishRecord(params) {
+ return http.get('/ext/workorderExt/getFinishRecord', { params })
+}
+// export function getFinishRecord (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderExt/getFinishRecord',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧璇︽儏
+export function deleteById (id) {
+ return http.get(`/ext/deviceExt/${id}`)
+}
+// export function getSbInfo (id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/deviceExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鎹叆搴撹揣浣嶇瓫閫夊叆搴撳崟 - H5
+export function finishedInBill(params) {
+ return http.get('/ext/wOutboundExt/finishedInBill', { params })
+}
+// export function finishedInBill (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/finishedInBill',
+// method: 'get',
+// params
+// })
+// }
+
+// 鐢ㄦ埛缁戝畾璁惧
+export function bindingDevice (data) {
+ return http.post('/ext/userDeviceExt/create', data)
+}
+// export function bindingDevice (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/userDeviceExt/create',
+// method: 'post',
+// data
+// })
+// }
+
+// 宸ヨ鍒嗛〉鏌ヨ
+export function toolingList (data) {
+ return http.post('/ext/appliancesExt/page', data)
+}
+// export function toolingList (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/appliancesExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏇存崲绡瓙
+export function chageApplicance (data) {
+ return http.post('/ext/appliancesExt/chageApplicance', data)
+}
+// export function chageApplicance (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/appliancesExt/chageApplicance',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐢宠鍗曪紝杩斿伐杩斾慨鐢宠涓嶈壇鍘熷洜
+export function checkFGFXList(params) {
+ return http.get('/ext/categoryUnionExt/checkFGFXList', { params })
+}
+// export function checkFGFXList (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/categoryUnionExt/checkFGFXList',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏌ヨ鍏徃绾у叏閮�
+export function allData (data) {
+ return http.post('/ext/salesorder/allData', data)
+}
+// export function allData (data: any): Promise<any> {
+// return httpRequest({
+// url: 'business/salesorder/allData',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ宸ュ簭
+export function getGXItem (id) {
+ return http.get(`/ext/proceduresExt/${id}`)
+}
+// export function getGXItem (id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/proceduresExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鏂板缓杩斿伐杩斾慨鐢宠鍗�
+export function createSingle (data) {
+ return http.post('/business/backorder/create', data)
+}
+// export function createSingle (data: any): Promise<any> {
+// return httpRequest({
+// url: 'business/backorder/create',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ褰撳墠鐢ㄦ埛鎵�鏈変富缁勭粐涓嬬殑宸ュ簭
+export function productesGroup (data) {
+ return http.post('/ext/proceduresExt/productesGroup', data)
+}
+// export function productesGroup (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/proceduresExt/productesGroup',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐢宠鍗曞垎椤垫煡璇�
+export function sqdCage (data) {
+ return http.post('/business/backorder/page', data)
+}
+// export function sqdCage (data: any): Promise<any> {
+// return httpRequest({
+// url: 'business/backorder/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐢宠鍗曟牴鎹甶d鏌ヨ璇︾粏
+export function getsqdInfo (id) {
+ return http.get(`/business/backorder/${id}`)
+}
+// export function getsqdInfo (id: any): Promise<any> {
+// return httpRequest({
+// url: `business/backorder/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鐢宠鍗�---鏍规嵁宸ュ巶id鏌ヨ宸ュ簭
+export function productesGroups (data) {
+ return http.post('/business/proceduresExt/productesGroup', data)
+}
+// export function productesGroups (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/proceduresExt/productesGroup',
+// method: 'post',
+// data
+// })
+// }
+
+// 瀹屽伐鍏ュ簱璇︽儏 - NEW
+export function finishedDetailNew(params) {
+ return http.get('/ext/workorderExt/finishedDetailNew', { params })
+}
+// export function finishedDetailNew (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderExt/finishedDetailNew',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁宸ュ崟鏌ヨ宸ヨ壓鍗�
+export function getListByWorkOrderId (data) {
+ return http.post('/ext/routeCardExt/getListByWorkOrderId', data)
+}
+// export function getListByWorkOrderId (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/routeCardExt/getListByWorkOrderId',
+// method: 'post',
+// data
+// })
+// }
+
+// 缁堟宸ヨ鎵弿
+export function getEndCheckAP(params) {
+ return http.get('/ext/workorderRecordExt/getEndCheckAP', { params })
+}
+// export function getEndCheckAP (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/getEndCheckAP',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ璁惧
+export function deletedj (id) {
+ return http.get(`/ext/workorderCheckAttrExt/delete/${id}`)
+}
+// export function deletedj (id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/workorderCheckAttrExt/delete/${id}`,
+// method: 'get'
+// })
+// }
+
+// 搴撳瓨閲忔煡璇� - H5
+export function pageForH5 (data) {
+ return http.post('/ext/wStockExt/pageForH5', data)
+}
+// export function pageForH5 (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wStockExt/pageForH5',
+// method: 'post',
+// data
+// })
+// }
+
+// 璐т綅鍒嗛〉鏌ヨ
+export function pageHW (data) {
+ return http.post('/ext/warehouseLocationExt/page', data)
+}
+// export function pageHW (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/warehouseLocationExt/page',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ浠撳簱涓嬭揣浣嶄俊鎭�
+export function getListByWarehouseId(params) {
+ return http.get('/ext/warehouseLocationExt/getListByWarehouseId', { params })
+}
+// export function getListByWarehouseId (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/warehouseLocationExt/getListByWarehouseId',
+// method: 'get',
+// params
+// })
+// }
+
+// 鎵嬪伐杞簱 - H5
+export function scanTransfer (data) {
+ return http.post('/ext/wTransferExt/scanTransfer', data)
+}
+// export function scanTransfer (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/scanTransfer',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ鍏ㄩ儴 - 鏍囧噯
+export function allForStandard (data) {
+ return http.post('/ext/workorderRecordExt/allForStandard', data)
+}
+// export function allForStandard (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/allForStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鐢熸垚鎶曟枡璁板綍 - standard
+export function dealWorkorderRecordStandard (data) {
+ return http.post('/ext/workorderRecordExt/dealWorkorderRecordStandard', data)
+}
+// export function dealWorkorderRecordStandard (data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/dealWorkorderRecordStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏌ヨ浜у嚭璁板綍鍒楄〃
+export function getWorkorderRecordListStandard(params) {
+ return http.get('/ext/workorderRecordExt/getWorkorderRecordListStandard', { params })
+}
+// export function getWorkorderRecordListStandard (params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/getWorkorderRecordListStandard',
+// method: 'get',
+// params
+// })
+// }
+
+/***
+ * 鏍规嵁ID鏌ヨ宸ヨ淇℃伅
+ * @param id
+ */
+export function getGzInfo (id) {
+ return http.get(`/ext/appliancesExt/${id}`)
+}
+// export function getGzInfo (id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/appliancesExt/${id}`,
+// method: 'get'
+// })
+// }
+
+/**
+ * 纭澶囨枡璇︽儏
+ * @param params id: 杞簱id
+ * @returns
+ */
+export function wTransferConfirm(params) {
+ return http.get('/ext/wTransferExt/wTransferConfirm', { params })
+}
+// export function wTransferConfirm(params: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wTransferExt/wTransferConfirm',
+// method: 'get',
+// params
+// })
+// }
+
+/**
+* 鎺ュ彈澶囨枡
+* @param params id: id
+* @returns
+*/
+export function acceptWTransfer(params) {
+ return http.get('/ext/wTransferExt/acceptWTransfer', { params })
+}
+// export function acceptWTransfer(params: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wTransferExt/acceptWTransfer',
+// method: 'get',
+// params
+// })
+// }
+
+// 鏂板鍑哄簱
+export function createForStandard (data) {
+ return http.post('/ext/wOutboundExt/createForStandard', data)
+}
+// export function createForStandard (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wOutboundExt/createForStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 搴撳瓨璋冩暣銆侀噰璐叆搴撳叆搴撳崟鍒涘缓
+export function wOutBoundForStockUp (data) {
+ return http.post('/ext/wOutboundExt/wOutBoundForStockUp', data)
+}
+// export function wOutBoundForStockUp (data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wOutboundExt/wOutBoundForStockUp',
+// method: 'post',
+// data
+// })
+// }
diff --git a/minipro_standard/util/api/agencyAPI.js b/minipro_standard/util/api/agencyAPI.js
new file mode 100644
index 0000000..6876b57
--- /dev/null
+++ b/minipro_standard/util/api/agencyAPI.js
@@ -0,0 +1,77 @@
+const http = uni.$u.http
+
+// 鍒嗛〉鏌ヨ
+export function getList(data) {
+ return http.post('/ext/noticesExt/page', data)
+}
+
+// 鏌ヨ缁熻鍒楄〃鏁伴噺
+export function pageCount(data) {
+ return http.post('/ext/noticesExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/noticesExt/pageCount',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁ID鏌ヨ
+export function getDB(id) {
+ return http.get(`/ext/noticesExt/${id}`)
+}
+// export function getDB(id: any): Promise<any> {
+// return httpRequest({
+// url: `ext/noticesExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鎵嬪姩鍑哄叆搴撲娇鐢� - 鍒嗛〉鏌ヨ
+export function findListPageForManual(data) {
+ return http.post('/ext/appliancesExt/findListPageForManual', data)
+}
+// export function findListPageForManual(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/appliancesExt/findListPageForManual',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ搴撳瓨
+export function choiceStockListPage(data) {
+ return http.post('/ext/wStockExt/choiceStockListPage', data)
+}
+// export function choiceStockListPage(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wStockExt/choiceStockListPage',
+// method: 'post',
+// data
+// })
+// }
+
+// 鏍规嵁浠撳簱鏌ヨ搴撳瓨-鏍囧噯鐗�
+export function choiceStockPageForStandard(data) {
+ return http.post('/ext/workorderRecordExt/choiceStockPageForStandard', data)
+}
+// export function choiceStockPageForStandard(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/workorderRecordExt/choiceStockPageForStandard',
+// method: 'post',
+// data
+// })
+// }
+
+// 鎵嬪姩鏂板缓杞簱鍗�
+export function createZK(data) {
+ return http.post('/ext/wTransferExt/create', data)
+}
+// export function createZK(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/create',
+// method: 'post',
+// data
+// })
+// }
diff --git a/minipro_standard/util/api/index.js b/minipro_standard/util/api/index.js
index c29fb8b..dfd23bc 100644
--- a/minipro_standard/util/api/index.js
+++ b/minipro_standard/util/api/index.js
@@ -1,4 +1,3 @@
-console.log('-----------');
const http = uni.$u.http
// 鐧诲綍
export function coustomLogin(params) {
@@ -18,7 +17,6 @@
// 鑿滃崟鏁版嵁
export function getTreeList(params) {
return http.get('/system/menu/treeNodes', {params})
-
}
// 閫�鍑虹櫥褰�
@@ -26,3 +24,27 @@
return http.get(`/wechat/logout`)
}
+// 寰俊鍏紬鍙风櫥褰�
+export function wxAccountLogin(data) {
+ return http.post('/system/wxAccountLogin', data)
+}
+
+// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+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})
+}
+
+// 寰俊閫�鍑虹櫥褰�
+export function wxLoginOut(data) {
+ return http.post('/system/wxLoginOut', data)
+}
\ No newline at end of file
diff --git a/minipro_standard/util/api/materialStorage.js b/minipro_standard/util/api/materialStorage.js
new file mode 100644
index 0000000..aa85e99
--- /dev/null
+++ b/minipro_standard/util/api/materialStorage.js
@@ -0,0 +1,115 @@
+const request = uni.$u.http
+
+// 杞簱鍗曞垪琛�
+export function getTransferList (data) {
+ return request.post('/ext/wTransferExt/pageList', data)
+}
+// export function getTransferList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wTransferExt/pageList',
+// method: 'post',
+// data
+// })
+// }
+
+// 杞簱鍗曡鎯�
+export function wTransferExtDetail (id) {
+ return request.get(`/ext/wTransferExt/${id}`)
+}
+// export function wTransferExtDetail(id: any): Promise<any> {
+// return httpRequest({
+// url: `/ext/wTransferExt/${id}`,
+// method: 'get'
+// })
+// }
+
+// 鍒嗛〉鏌ヨ搴撳瓨
+export function getwStockExtList (data) {
+ return request.post('/ext/wStockExt/pageForH5', data)
+}
+// export function getwStockExtList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wStockExt/pageForH5',
+// method: 'post',
+// data
+// })
+// }
+
+// 鍑哄叆搴撳崟鍒楄〃
+export function getBoundList (data) {
+ return request.post('/ext/wOutboundExt/listPage', data)
+}
+// export function getBoundList(data: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wOutboundExt/listPage',
+// method: 'post',
+// data
+// })
+// }
+
+// 鎻愪氦杞簱鍗曞嚭鍏ュ簱
+export function inOutSubmit(params) {
+ return http.get('/ext/wTransferExt/wTransferForInOutUpload', { params })
+}
+// export function inOutSubmit(params: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/wTransferForInOutUpload',
+// method: 'get',
+// params
+// })
+// }
+
+// 鍑哄叆搴撳垪琛ㄧ粺璁� - H5
+export function pageCount (data) {
+ return request.post('/ext/wOutboundExt/pageCount', data)
+}
+// export function pageCount(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wOutboundExt/pageCount',
+// method: 'post',
+// data
+// })
+// }
+
+// 杞簱鍒楄〃缁熻 - H5
+export function ZKPageCount (data) {
+ return request.post('/ext/wTransferExt/pageCount', data)
+}
+// export function ZKPageCount(data: any): Promise<any> {
+// return httpRequest({
+// url: 'ext/wTransferExt/pageCount',
+// method: 'post',
+// data
+// })
+// }
+
+/**
+ *
+ * @param params id 鍑哄叆搴搃d
+ * @returns
+ */
+export function getBoundDetail(params) {
+ return http.get('/ext/wOutboundExt/findById', { params })
+}
+// export function getBoundDetail(params: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wOutboundExt/findById',
+// method: 'get',
+// params
+// })
+// }
+/**
+ * 鍙栨秷鍑哄叆搴撳崟鎹�
+ * @param params id 鍑哄叆搴搃d
+ * @returns
+ */
+export function cancelBound(params) {
+ return http.get('/ext/wOutboundExt/cancel', { params })
+}
+// export function cancelBound(params: any): Promise<any> {
+// return httpRequest({
+// url: '/ext/wOutboundExt/cancel',
+// method: 'get',
+// params
+// })
+// }
diff --git a/minipro_standard/util/constData.js b/minipro_standard/util/constData.js
new file mode 100644
index 0000000..e247ea1
--- /dev/null
+++ b/minipro_standard/util/constData.js
@@ -0,0 +1,145 @@
+export const documentType = [
+ { name: '杞﹂棿棰嗘枡', id: 1 },
+ { name: '杞﹂棿杞簱', id: 5 },
+ { name: '澶栧崗棰嗘枡杞簱', id: 6 },
+ { name: '澶栧崗瀹屽伐杞簱', id: 7 },
+ { name: '浜у搧鍏ュ簱', id: 8 },
+ { name: '浜у搧杞簱', id: 9 },
+ { name: '璁╂鏀捐鍏ュ簱', id: 10 },
+ { name: '璁╂鏀捐杞簱', id: 11 },
+ { name: '瀹㈣繑杩斾慨棰嗘枡', id: 12 },
+ { name: '瀹㈣繑杩斾慨鍏ュ簱', id: 13 },
+ { name: '璺ㄧ粍缁囪浆搴�', id: 14 },
+ { name: '瀹㈤��杩斾慨棰嗘枡', id: 16 },
+ { name: '瀹㈤��杩斾慨鍏ュ簱', id: 17 },
+ { name: '搴熷搧鍏ュ簱', id: 30 }
+]
+
+export const orderType = [
+ {
+ name: '杞﹂棿棰嗘枡',
+ id: 1
+ },
+ {
+ name: '璁″垝棰嗘枡',
+ id: 2
+ },
+ {
+ name: '鏈哄彴澶囨枡',
+ id: 3
+ },
+ {
+ name: '瀹屽伐鍏ュ簱',
+ id: 4
+ },
+ {
+ name: '杞﹂棿杞簱',
+ id: 5
+ },
+ {
+ name: '澶栧崗棰嗘枡杞簱',
+ id: 6
+ },
+ {
+ name: '澶栧崗瀹屽伐杞簱',
+ id: 7
+ },
+ {
+ name: '浜у搧鍏ュ簱',
+ id: 8
+ },
+ {
+ name: '浜у搧杞簱',
+ id: 9
+ },
+ {
+ name: '璁╂鏀捐鍏ュ簱',
+ id: 10
+ },
+ {
+ name: '璁╂鏀捐杞簱',
+ id: 11
+ },
+ {
+ name: '瀹㈣繑杩斾慨棰嗘枡',
+ id: 12
+ },
+ {
+ name: '瀹㈣繑杩斾慨鍏ュ簱',
+ id: 13
+ },
+ {
+ name: '璺ㄧ粍缁囪浆搴�',
+ id: 14
+ },
+ {
+ name: '宸ュ簭鎶ュ簾',
+ id: 15
+ },
+ {
+ name: '瀹㈤��杩斾慨棰嗘枡',
+ id: 16
+ },
+ {
+ name: '瀹㈤��杩斾慨鍏ュ簱',
+ id: 17
+ },
+ {
+ name: '閿�鍞嚭搴�',
+ id: 18
+ },
+ {
+ name: '璁╂閿�鍞�',
+ id: 19
+ },
+ {
+ name: '宸ュ崟鎶曟枡',
+ id: 20
+ },
+ {
+ name: '浠撳簱鎶ュ簾',
+ id: 21
+ },
+ {
+ name: '瀹㈤��妫�楠岄鏂�',
+ id: 22
+ },
+ {
+ name: '瀹㈣繑妫�楠岄鏂�',
+ id: 23
+ },
+ {
+ name: '宸ュ崟浜у嚭',
+ id: 24
+ },
+ {
+ name: '閲囪喘鍏ュ簱',
+ id: 25
+ },
+ {
+ name: '瀹㈤��妫�楠屽叆搴�',
+ id: 26
+ },
+ {
+ name: '瀹㈣繑妫�楠屽叆搴�',
+ id: 27
+ },
+ {
+ name: '搴撳瓨璋冩暣',
+ id: 28
+ },
+ {
+ name: '搴熷搧鍏ュ簱',
+ id: 30
+ }
+]
+
+export const orderTyepToStr = (type) => {
+ // <!-- 1銆佽溅闂撮鏂欙紱2銆佽溅闂村鏂欙紱3銆佸叾浠栵紱4銆佸畬宸ュ叆搴� -->
+ for (const item of orderType) {
+ if (item.id === type) {
+ return item.name
+ }
+ }
+ return '-'
+}
\ No newline at end of file
diff --git a/minipro_standard/util/request/index.js b/minipro_standard/util/request/index.js
index 8cc78b7..9bd5596 100644
--- a/minipro_standard/util/request/index.js
+++ b/minipro_standard/util/request/index.js
@@ -1,13 +1,13 @@
// 寮曞叆閰嶇疆
-import config from '@/common/config'
+import { baseUrl } from '@/common/config'
// 鍒濆鍖栬姹傞厤缃�
uni.$u.http.setConfig((defaultConfig) => {
/* defaultConfig 涓洪粯璁ゅ叏灞�閰嶇疆 */
- defaultConfig.baseURL = config.baseUrl /* 鏍瑰煙鍚� */
- config.header = {
- 'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
+ defaultConfig.baseURL = baseUrl /* 鏍瑰煙鍚� */
+ defaultConfig.header = {
+ 'content-type': 'application/json;charset=utf-8',
}
- config.dataType = 'json'
+ defaultConfig.dataType = 'json'
return defaultConfig
})
diff --git a/minipro_standard/util/request/requestInterceptors.js b/minipro_standard/util/request/requestInterceptors.js
index bc693ee..fa7a17c 100644
--- a/minipro_standard/util/request/requestInterceptors.js
+++ b/minipro_standard/util/request/requestInterceptors.js
@@ -2,20 +2,13 @@
* 璇锋眰鎷︽埅
* @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))
+ if (vm.$store.state.session) {
+ 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)
})
}
diff --git a/minipro_standard/util/utils.js b/minipro_standard/util/utils.js
new file mode 100644
index 0000000..76809d9
--- /dev/null
+++ b/minipro_standard/util/utils.js
@@ -0,0 +1,30 @@
+/***
+ *
+ * @param time 鏃ユ湡 骞存湀鏃�
+ */
+const gsdate = (time) => {
+ let date = new Date(time)
+ let y = date.getFullYear()
+ let m = date.getMonth() + 1
+ m = m < 10 ? ('0' + m) : m
+ let d = date.getDate()
+ d = d < 10 ? ('0' + d) : d
+ return y + '-' + m + '-' + d;
+}
+
+/***
+ *
+ * @param time 鏃ユ湡 骞存湀鏃ユ椂鍒嗙
+ * @param Sign 闂撮殧
+ */
+function setTime (time, Sign) {
+ let year = time.getFullYear();
+ let month = time.getMonth() + 1 >= 10 ? time.getMonth() + 1 : `0${time.getMonth() + 1}`;
+ let day = time.getDate() >= 10 ? time.getDate() : `0${time.getDate()}`;
+ let hour = time.getHours() >= 10 ? time.getHours() : `0${time.getHours()}`;
+ let minute = time.getMinutes() >= 10 ? time.getMinutes() : `0${time.getMinutes()}`;
+ let second = time.getSeconds() >= 10 ? time.getSeconds() : `0${time.getSeconds()}`;
+ return [year, Sign, month , Sign, day, ' ', hour , ':', minute, ':', second ].join('');
+}
+
+export { gsdate, setTime }
diff --git a/platform_web/.env.development b/platform_web/.env.development
index 53c2611..797c589 100644
--- a/platform_web/.env.development
+++ b/platform_web/.env.development
@@ -16,10 +16,10 @@
#姹熻悕鏈湴
-# VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
+VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
#鐒︽澗
-VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
+#VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
#鍒樼纾婃湰鍦�
# VUE_APP_BASE_URL = 'http://192.168.0.18:10021/'
diff --git a/platform_web/src/views/system/loginLog.vue b/platform_web/src/views/system/loginLog.vue
index aff49db..bd26f42 100644
--- a/platform_web/src/views/system/loginLog.vue
+++ b/platform_web/src/views/system/loginLog.vue
@@ -2,7 +2,7 @@
<TableLayout :permissions="['system:loginLog:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鐧诲綍鐢ㄦ埛鍚�" prop="loginUsername">
+ <el-form-item label="鐢ㄦ埛鍚�" prop="loginUsername">
<el-input v-model="searchForm.loginUsername" placeholder="璇疯緭鍏ョ櫥褰曠敤鎴峰悕" @keypress.enter.native="search"></el-input>
</el-form-item>
<!-- <el-form-item label="鐧诲綍IP" prop="ip">
@@ -10,13 +10,13 @@
</el-form-item>
<el-form-item label="鏈嶅姟鍣↖P" prop="serverIp">
<el-input v-model="searchForm.serverIp" placeholder="璇疯緭鍏ユ湇鍔″櫒IP" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁鐧诲綍鎴愬姛" prop="success">
+ </el-form-item>-->
+ <el-form-item label="鐘舵��" prop="success">
<el-select v-model="searchForm.success" placeholder="璇烽�夋嫨鏄惁鐧诲綍鐘舵��" clearable @change="search">
<el-option value="true" label="鐧诲綍鎴愬姛"/>
<el-option value="false" label="鐧诲綍澶辫触"/>
</el-select>
- </el-form-item> -->
+ </el-form-item>
<el-form-item label="鏉ユ簮" prop="orgin">
<el-select v-model="searchForm.orgin" placeholder="璇烽�夋嫨鐧诲綍鏉ユ簮" clearable @change="search">
<el-option value="0" label="PC鐧婚檰"/>
@@ -26,7 +26,7 @@
<el-option value="4" label="寰俊灏忕▼搴�"/>
</el-select>
</el-form-item>
- <!-- <el-form-item label="鐧诲綍鏃堕棿" prop="loginTime">
+ <el-form-item label="鏃堕棿" prop="loginTime">
<el-date-picker
v-model="searchDateRange"
type="datetimerange"
@@ -36,10 +36,10 @@
end-placeholder="缁撴潫鏃堕棿"
@change="handleSearchTimeChange"
></el-date-picker>
- </el-form-item> -->
+ </el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
- <!-- <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button> -->
+ <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
@@ -62,9 +62,9 @@
<el-table-column prop="companyUserId" label="鐢ㄦ埛id" align="center" min-width="100px"></el-table-column>
<el-table-column prop="companyName" label="浼佷笟鍚嶇О" align="center" min-width="100px"></el-table-column>
<el-table-column prop="loginUsername" label="鐧诲綍鐢ㄦ埛鍚�" align="center" min-width="100px"></el-table-column>
- <el-table-column prop="companyUserName" label="鐧诲綍鐢ㄦ埛鍚�" align="center" min-width="100px">
+ <el-table-column prop="companyUserName" label="浼佷笟鐢ㄦ埛鍚嶇О" align="center" min-width="100px">
<template slot-scope="{row}">
- {{ row.companyUserName || row.loginUsername }}
+ {{ row.companyUserName}}
</template>
</el-table-column>
<el-table-column prop="ip" label="鐧诲綍IP" align="center" min-width="120px"></el-table-column>
diff --git a/server/README.md b/server/README.md
index 6b32a18..3be8fac 100644
--- a/server/README.md
+++ b/server/README.md
@@ -1,3 +1,7 @@
鍩虹宸ョ▼锛欵va v2.0
瀹樼綉锛歨ttp://eva.adjustrd.com/
鎶�鏈敮鎸丵Q缇わ細877957236
+
+
+鍚姩鍛戒护锛�
+nohup java -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=10021 -jar /mnt/sdc/jars/dmmestest/doumeeplant.jar >/mnt/sdc/jars/dmmestest/doumeeplant.log 2>/mnt/sdc/jars/dmmestest/doumeeplanterr.log &
diff --git a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
index 3993e09..bfab39a 100644
--- a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
@@ -63,12 +63,14 @@
Category query = new Category();
query.setDeleted(Constants.ZERO);
+ query.setCateType(category.getCateType());
query.setRootDepartId(getLoginUser().getRootDepartment().getId());
query.setCode(category.getCode());
List<Category> list = categoryService.findList(query);
Category query1 = new Category();
query1.setDeleted(Constants.ZERO);
+ query1.setCateType(category.getCateType());
query1.setRootDepartId(getLoginUser().getRootDepartment().getId());
query1.setName(category.getName());
List<Category> list1 = categoryService.findList(query1);
diff --git a/server/src/main/java/doumeemes/api/ext/DeviceExtController.java b/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
index 9c007d1..39d5686 100644
--- a/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/DeviceExtController.java
@@ -166,6 +166,10 @@
deviceService.updateById(find);
if(StringUtils.isNotBlank(device.getUserIds())){
deviceService.dealDeviceUserId(Constants.ONE,device.getUserIds(),device.getId(),getLoginUser());
+ }else {
+ UserDevice userDevice = new UserDevice();
+ userDevice.setDeviceId(device.getId());
+ userDeviceService.delete(userDevice);
}
return ApiResponse.success(null);
diff --git a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
index d9054cd..de8b960 100644
--- a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
+++ b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
@@ -5,6 +5,7 @@
import doumeemes.core.model.ApiResponse;
import doumeemes.core.model.PageData;
import doumeemes.core.model.PageWrap;
+import doumeemes.core.utils.DateUtil;
import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
import doumeemes.dao.system.model.SystemLoginLog;
import doumeemes.service.system.SystemLoginLogService;
@@ -39,6 +40,6 @@
@ApiOperation("瀵煎嚭Excel")
@RequiresPermissions("system:loginLog:query")
public void export (@RequestBody PageWrap<QuerySystemLoginLogDTO> pageWrap, HttpServletResponse response) {
- ExcelExporter.build(SystemLoginLog.class).export(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織", response);
+ ExcelExporter.build(SystemLoginLog.class).exportWithFirstAndEnd(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織_"+System.currentTimeMillis(),"鐧诲綍鏃ュ織-"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
}
}
diff --git a/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java b/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
index ea10413..ef00b44 100644
--- a/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
+++ b/server/src/main/java/doumeemes/config/mybatis/MyBatisInterceptor.java
@@ -27,7 +27,6 @@
@Signature(type= Executor.class, method = "update", args={MappedStatement.class, Object.class})
})
public class MyBatisInterceptor implements Interceptor {
-
private static final String CREATE_TIME = "createTime";
private static final String CREATE_USER = "createUser";
@@ -118,6 +117,10 @@
* @date 2022/04/18 18:12
*/
private LoginUserInfo getLoginUser () {
- return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ try {
+ return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ }catch (Exception e){
+ return null;
+ }
}
}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java b/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
index b9e3a44..2e5dec5 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroAuthFilter.java
@@ -1,9 +1,10 @@
package doumeemes.config.shiro;
-import doumeemes.core.model.ApiResponse;
import com.alibaba.fastjson.JSON;
+import doumeemes.core.model.ApiResponse;
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@@ -12,7 +13,7 @@
/**
* Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
public class ShiroAuthFilter extends FormAuthenticationFilter {
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCache.java b/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
index e91737f..6867883 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCache.java
@@ -1,24 +1,28 @@
package doumeemes.config.shiro;
-import doumeemes.service.proxy.CacheProxy;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheException;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.util.CollectionUtils;
import org.springframework.context.annotation.Scope;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
+import javax.annotation.Resource;
import java.io.Serializable;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
/**
* Shiro缂撳瓨
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Scope(value = "prototype")
@Slf4j
@@ -27,8 +31,8 @@
private String keyPrefix = "";
- @Autowired
- private CacheProxy<Object, Serializable> cacheProxy;
+ @Resource(name="sessionRedisTemplate")
+ private RedisTemplate<Object, Serializable> redisTemplate;
public ShiroCache () {
log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
@@ -44,7 +48,7 @@
if (key == null) {
return null;
}
- return cacheProxy.get(getKey(key));
+ return redisTemplate.opsForValue().get(getKey(key));
}
@Override
@@ -52,7 +56,7 @@
if (key == null) {
return null;
}
- cacheProxy.put(getKey(key), value);
+ redisTemplate.opsForValue().set(getKey(key), value);
return value;
}
@@ -60,14 +64,14 @@
if (key == null) {
return null;
}
- cacheProxy.put(getKey(key), value, timeout);
+ redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
return value;
}
@Override
public void clear() throws CacheException {
Set<Object> keys = this.keys();
- cacheProxy.remove(keys);
+ redisTemplate.delete(keys);
}
@Override
@@ -77,7 +81,7 @@
@Override
public Set<Object> keys() {
- Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
+ Set<Object> keys = redisTemplate.keys(keyPrefix + "*");
if (CollectionUtils.isEmpty(keys)) {
return Collections.emptySet();
}
@@ -92,7 +96,7 @@
return values;
}
for (Object k : keys) {
- values.add(cacheProxy.get(k));
+ values.add(redisTemplate.opsForValue().get(k));
}
return values;
}
@@ -103,11 +107,53 @@
return null;
}
Serializable value = this.get(getKey(key));
- cacheProxy.remove(getKey(key));
+ redisTemplate.delete(getKey(key));
return value;
}
private Object getKey (Object key) {
+ if (key instanceof PrincipalCollection) {
+ return this.keyPrefix + getRedisKeyFromPrincipalIdField((PrincipalCollection)key);
+ }
return (key instanceof String ? (this.keyPrefix + key) : key);
}
+
+ /**
+ * 鑾峰彇redis cache key
+ */
+ private String getRedisKeyFromPrincipalIdField(PrincipalCollection key) {
+ Object principalObject = key.getPrimaryPrincipal();
+ if (principalObject instanceof String) {
+ return principalObject.toString();
+ } else {
+ Method pincipalIdGetter = this.getPrincipalIdGetter(principalObject);
+ return this.getIdObj(principalObject, pincipalIdGetter);
+ }
+ }
+
+ private Method getPrincipalIdGetter(Object principalObject) {
+ Method pincipalIdGetter;
+ String principalIdMethodName = this.getPrincipalIdMethodName();
+
+ try {
+ pincipalIdGetter = principalObject.getClass().getMethod(principalIdMethodName);
+ return pincipalIdGetter;
+ } catch (NoSuchMethodException e) {
+ throw new SerializationException(e.getMessage(), e);
+ }
+ }
+
+ private String getIdObj(Object principalObject, Method pincipalIdGetter) {
+ try {
+ Object idObj = pincipalIdGetter.invoke(principalObject);
+ String redisKey = idObj.toString();
+ return redisKey;
+ } catch (Exception e) {
+ throw new SerializationException(e.getMessage(), e);
+ }
+ }
+
+ private String getPrincipalIdMethodName() {
+ return "getId";
+ }
}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
index cb3ffe7..900c473 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCacheManager.java
@@ -14,7 +14,7 @@
/**
* 鑷畾涔塖hiro CacheManager
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Slf4j
@Component
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
index 526121a..3318795 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
@@ -1,26 +1,29 @@
package doumeemes.config.shiro;
+import doumeemes.task.ScheduleTool;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
import javax.servlet.Filter;
-import java.util.HashMap;
+import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Shiro閰嶇疆
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Configuration
public class ShiroConfig {
@@ -40,6 +43,20 @@
@Autowired
private ShiroRealm shiroRealm;
+ @Bean("sessionRedisTemplate")
+ public RedisTemplate<Object, Serializable> sessionRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate<Object, Serializable> redisTemplate = new RedisTemplate<>();
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+ // 榛樿搴忓垪鍖栨柟寮�
+ redisTemplate.setDefaultSerializer(new StringRedisSerializer());
+ // 鍊煎簭鍒楀寲鏂瑰紡
+ ShiroSessionSerializer serializer = new ShiroSessionSerializer();
+ redisTemplate.setValueSerializer(serializer);
+ redisTemplate.setHashValueSerializer(serializer);
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
@@ -51,6 +68,9 @@
public SessionManager sessionManager() {
ShiroSessionManager sessionManager = new ShiroSessionManager();
sessionManager.setSessionDAO(shiroSessionDAO);
+ sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
+ // 鍒犻櫎澶辨晥鐨剆ession
+ sessionManager.setDeleteInvalidSessions(true);
return sessionManager;
}
@@ -60,7 +80,6 @@
securityManager.setRealm(shiroRealm);
securityManager.setSessionManager(this.sessionManager());
securityManager.setCacheManager(shiroCacheManager);
- ThreadContext.bind(securityManager);
return securityManager;
}
@@ -70,26 +89,17 @@
shiroFilterFactoryBean.setSecurityManager(securityManager);
Map<String, String> map = new LinkedHashMap<>();
// 璺緞鎷︽埅閰嶇疆
+ map.put("/web/user/login", "anon");
+ map.put("/public/uploadRichText", "anon");
map.put("/system/login", "anon");
- map.put("/system/wxLogin", "anon");
- map.put("/system/wxProgramLogin", "anon");
- map.put("/system/wxAccountLogin", "anon");
- map.put("/system/initCompany", "anon");
map.put("/system/logout", "anon");
map.put("/common/captcha", "anon");
- map.put("/statistics/**", "anon");
- map.put("/dingding/push", "anon");
-// map.put("/ext/workorderExt/freshStatistics", "anon");
- map.put("/dingding/jsapiTicket", "anon");
- map.put("/dingding/ddLogin", "anon");
- map.put("/dingding/getDingdingCorpId", "anon");
- map.put("/lingyang/login", "anon");
- map.put("/lingyang/loginDemo", "anon");
- map.put("/edgp/**", "anon");
+ //鏀捐 scratch 鎺ュ彛
+ map.put("/web/scratch/**", "anon");
+
// - 鏀捐swagger
map.put("/doc.html", "anon");
map.put("/webjars/**", "anon");
- map.put("/template/**", "anon");
map.put("/swagger-resources/**", "anon");
map.put("/v2/api-docs/**", "anon");
// - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
index 8d01643..a9f8563 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroCredentialsMatcher.java
@@ -1,5 +1,6 @@
package doumeemes.config.shiro;
+import doumeemes.config.shiro.ShiroToken;
import doumeemes.core.utils.Utils;
import doumeemes.dao.system.model.SystemUser;
import doumeemes.service.system.SystemUserService;
@@ -13,11 +14,10 @@
/**
* Shiro瀵嗙爜姣斿澶勭悊
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Component
public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
-
@Lazy
@Autowired
private SystemUserService systemUserService;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
index c405ec9..6c0da35 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
@@ -4,9 +4,6 @@
import doumeemes.core.exception.BusinessException;
import doumeemes.core.model.LoginUserInfo;
import doumeemes.core.utils.Constants;
-import doumeemes.dao.business.model.Company;
-import doumeemes.dao.business.model.CompanyUser;
-import doumeemes.dao.business.model.Department;
import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
import doumeemes.dao.ext.vo.CompanyExtListVO;
import doumeemes.dao.ext.vo.CompanyUserExtListVO;
@@ -15,7 +12,6 @@
import doumeemes.dao.system.model.SystemPermission;
import doumeemes.dao.system.model.SystemRole;
import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.business.CompanyUserService;
import doumeemes.service.ext.CompanyExtService;
import doumeemes.service.ext.CompanyUserExtService;
import doumeemes.service.ext.DepartmentExtService;
@@ -37,12 +33,11 @@
import java.util.Date;
import java.util.List;
-import java.util.Objects;
/**
* 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2022/03/15 09:54
*/
@Component
public class ShiroRealm extends AuthorizingRealm {
@@ -52,7 +47,7 @@
private DepartmentExtService departmentExtService;
@Lazy
@Autowired
- private SystemDataPermissionService systemDataPermissionService;
+ private SystemDataPermissionService systemDataPermissionService;
@Lazy
@Autowired
private CompanyExtService companyExtService;
@@ -70,19 +65,11 @@
@Lazy
@Autowired
private SystemPermissionService systemPermissionService;
- /**
- * 閲嶅啓supports鏂规硶锛屼娇 Shiro 鑳藉璇嗗埆鑷畾涔夌殑 Token
- * @param token
- * @return
- */
- @Override
- public boolean supports(AuthenticationToken token) {
- return token instanceof ShiroToken;
- }
+
/**
* 鏉冮檺澶勭悊
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2022/03/15 09:54
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
@@ -97,10 +84,10 @@
/**
* 璁よ瘉澶勭悊
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2022/03/15 09:54
*/
@Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException,BusinessException {
+ protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// 鑾峰彇鐢ㄦ埛鍚�
ShiroToken authenticationToken =(ShiroToken) token;
String username = authenticationToken.getPrincipal().toString();
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java b/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java
new file mode 100644
index 0000000..5fb2119
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRedisSessionDAO.java
@@ -0,0 +1,139 @@
+package doumeemes.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.SerializationUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+//@Component
+@Slf4j
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class ShiroRedisSessionDAO implements SessionDAO {
+// Session瓒呮椂鏃堕棿锛屽崟浣嶄负姣
+private static final String KEY_PREFIX = "shiro:session:";
+ private long expireTime = 120000;
+ @Autowired
+ private ShiroTokenManager shiroTokenManager;
+ @Autowired
+ private RedisTemplate redisTemplate;// Redis鎿嶄綔绫伙紝瀵硅繖涓娇鐢ㄤ笉鐔熸倝鐨勶紝鍙互鍙傝�冨墠闈㈢殑鍗氬
+
+ public ShiroRedisSessionDAO() {
+
+ super();
+
+ }
+
+ public ShiroRedisSessionDAO(long expireTime, StringRedisTemplate redisTemplate) {
+
+ super();
+
+ this.expireTime = expireTime;
+
+ this.redisTemplate = redisTemplate;
+
+ }
+
+ @Override // 鏇存柊session
+
+ public void update(Session session) throws UnknownSessionException {
+
+ System.out.println("===============update================");
+
+ if (session == null || session.getId() == null) {
+ return;
+ }
+ session.setTimeout(expireTime);
+ byte[] bytes = SerializationUtils.serialize((Serializable) session);
+ redisTemplate.opsForValue().set(KEY_PREFIX+session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+ }
+
+ @Override // 鍒犻櫎session
+
+ public void delete(Session session) {
+
+ System.out.println("===============delete================");
+
+ if (null == session) {
+
+ return;
+
+ }
+
+ redisTemplate.opsForValue().getOperations().delete(KEY_PREFIX+session.getId());
+
+ }
+
+ @Override// 鑾峰彇娲昏穬鐨剆ession锛屽彲浠ョ敤鏉ョ粺璁″湪绾夸汉鏁帮紝濡傛灉瑕佸疄鐜拌繖涓姛鑳斤紝鍙互鍦ㄥ皢session鍔犲叆redis鏃舵寚瀹氫竴涓猻ession鍓嶇紑锛岀粺璁$殑鏃跺�欏垯浣跨敤keys("session-prefix*")鐨勬柟寮忔潵妯$硦鏌ユ壘redis涓墍鏈夌殑session闆嗗悎
+ public Collection getActiveSessions() {
+
+ System.out.println("==============getActiveSessions=================");
+
+ return redisTemplate.keys("*");
+
+ }
+
+ @Override
+ public Serializable create(Session session) {
+
+ System.out.println("===============doCreate================");
+
+ if (session == null) {
+ log.error("session is null");
+ throw new UnknownSessionException("session is null");
+ }
+ Serializable sessionId = shiroTokenManager.build();
+ ((SimpleSession)session).setId(sessionId);
+ byte[] bytes = SerializationUtils.serialize((Serializable) session);
+ redisTemplate.opsForValue().set(session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+ return sessionId;
+
+ }
+ public Session readSession(Serializable sessionId) throws UnknownSessionException{
+ if (sessionId == null) {
+ log.warn("session id is null");
+ return null;
+ }
+ if (sessionId instanceof String) {
+ // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+ shiroTokenManager.check((String) sessionId);
+ }
+ log.debug("read session from cache");
+
+ SimpleSession simpleSession = (SimpleSession) SerializationUtils.deserialize((byte[])redisTemplate.opsForValue().get(KEY_PREFIX+sessionId));
+ return simpleSession;
+
+ }
+
+ public long getExpireTime() {
+
+ return expireTime;
+
+ }
+
+ public void setExpireTime(long expireTime) {
+
+ this.expireTime = expireTime;
+
+ }
+
+ public RedisTemplate getRedisTemplate() {
+
+ return redisTemplate;
+
+ }
+
+ public void setRedisTemplate(RedisTemplate redisTemplate) {
+
+ this.redisTemplate = redisTemplate;
+
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
index 128383d..3c9ceba 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionDAO.java
@@ -10,12 +10,15 @@
import org.springframework.stereotype.Component;
import java.io.Serializable;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
/**
* 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Data
@Slf4j
@@ -27,7 +30,7 @@
@Autowired
private ShiroCache shiroCache;
- private int expireTime = 1800;
+ private int expireTime = 60 * 60 * 24;
@Autowired
private ShiroTokenManager shiroTokenManager;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
index 115403a..cfc4c75 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionManager.java
@@ -19,7 +19,7 @@
/**
* 鑷畾涔変細璇濈鐞嗗櫒
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Slf4j
public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
@@ -65,7 +65,6 @@
}
return sessionId;
}
-
@Override
public boolean isServletContainerSessions() {
return false;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java b/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java
new file mode 100644
index 0000000..9a21d79
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroSessionSerializer.java
@@ -0,0 +1,36 @@
+package doumeemes.config.shiro;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.shiro.codec.Base64;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Session搴忓垪鍖�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroSessionSerializer implements RedisSerializer<Serializable> {
+
+ @Override
+ public byte[] serialize(Serializable obj) throws SerializationException {
+ if (obj == null) {
+ return new byte[0];
+ }
+ String sessionBase64 = Base64.encodeToString(SerializationUtils.serialize(obj));
+ return sessionBase64.getBytes(StandardCharsets.UTF_8);
+ }
+
+ @Override
+ public Serializable deserialize(byte[] bytes) throws SerializationException {
+ if (bytes == null || bytes.length == 0) {
+ return null;
+ }
+ String sessionString = new String(bytes, StandardCharsets.UTF_8);
+ byte[] sessionBytes = Base64.decode(sessionString);
+ return SerializationUtils.deserialize(sessionBytes);
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
index b0fa87c..ff90ee0 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroToken.java
@@ -1,27 +1,7 @@
package doumeemes.config.shiro;
-import doumeemes.core.model.LoginUserInfo;
-import doumeemes.core.utils.Constants;
-import doumeemes.dao.business.model.Department;
-import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
-import doumeemes.dao.ext.vo.CompanyUserExtListVO;
-import doumeemes.dao.system.model.SystemPermission;
-import doumeemes.dao.system.model.SystemRole;
-import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.ext.CompanyUserExtService;
-import doumeemes.service.system.SystemPermissionService;
-import doumeemes.service.system.SystemRoleService;
-import doumeemes.service.system.SystemUserService;
-import org.apache.shiro.authc.*;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
+import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.stereotype.Component;
-
-import java.util.List;
/**
* 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
@@ -40,7 +20,7 @@
public ShiroToken() {
}
- public ShiroToken(Integer companyId,String username, String password,boolean isDdLogin,boolean isWxLogin) {
+ public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
super(username, password, false, (String)null);
this.companyId = companyId;
this.isDdLogin = isDdLogin;
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java b/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
index 2b644dc..53c6020 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroTokenManager.java
@@ -8,7 +8,7 @@
/**
* 榛樿Token绠$悊鍣�
* @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
+ * @date 2023/04/17 12:11
*/
@Component
public class ShiroTokenManager {
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java
new file mode 100644
index 0000000..f6d86bd
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroAuthFilter.java
@@ -0,0 +1,30 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.model.ApiResponse;
+import com.alibaba.fastjson.JSON;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+public class ShiroAuthFilter extends FormAuthenticationFilter {
+
+ public ShiroAuthFilter() {
+ super();
+ }
+
+ @Override
+ protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+ HttpServletResponse servletResponse = (HttpServletResponse) response;
+ servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
+ servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
+ return Boolean.FALSE;
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java
new file mode 100644
index 0000000..d42c75e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCache.java
@@ -0,0 +1,111 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.service.proxy.CacheProxy;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Shiro缂撳瓨
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Scope(value = "prototype")
+@Slf4j
+//@Component
+public class ShiroCache implements Cache<Object, Serializable> {
+
+ private String keyPrefix = "";
+
+ @Autowired
+ private CacheProxy<Object, Serializable> cacheProxy;
+
+ public ShiroCache () {
+ log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+ }
+
+ public ShiroCache(String keyPrefix) {
+ log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+ this.keyPrefix = keyPrefix;
+ }
+
+ @Override
+ public Serializable get(Object key) throws CacheException {
+ if (key == null) {
+ return null;
+ }
+ return cacheProxy.get(getKey(key));
+ }
+
+ @Override
+ public Serializable put(Object key, Serializable value) throws CacheException {
+ if (key == null) {
+ return null;
+ }
+ cacheProxy.put(getKey(key), value);
+ return value;
+ }
+
+ public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
+ if (key == null) {
+ return null;
+ }
+ cacheProxy.put(getKey(key), value, timeout);
+ return value;
+ }
+
+ @Override
+ public void clear() throws CacheException {
+ Set<Object> keys = this.keys();
+ cacheProxy.remove(keys);
+ }
+
+ @Override
+ public int size() {
+ return this.keys().size();
+ }
+
+ @Override
+ public Set<Object> keys() {
+ Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
+ if (CollectionUtils.isEmpty(keys)) {
+ return Collections.emptySet();
+ }
+ return keys;
+ }
+
+ @Override
+ public Collection<Serializable> values() {
+ Collection<Serializable> values = new ArrayList<>();
+ Set<Object> keys = this.keys();
+ if (CollectionUtils.isEmpty(keys)) {
+ return values;
+ }
+ for (Object k : keys) {
+ values.add(cacheProxy.get(k));
+ }
+ return values;
+ }
+
+ @Override
+ public Serializable remove(Object key) throws CacheException {
+ if (key == null) {
+ return null;
+ }
+ Serializable value = this.get(getKey(key));
+ cacheProxy.remove(getKey(key));
+ return value;
+ }
+
+ private Object getKey (Object key) {
+ return (key instanceof String ? (this.keyPrefix + key) : key);
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java
new file mode 100644
index 0000000..2f4f3e8
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCacheManager.java
@@ -0,0 +1,43 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.cache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鑷畾涔塖hiro CacheManager
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+//@Component
+public class ShiroCacheManager implements CacheManager {
+
+ private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
+
+ private static ApplicationContext applicationContext;
+
+ @Override
+ public <K, V> Cache<K, V> getCache(String name) throws CacheException {
+ log.debug("get cache, name=" + name);
+ Cache cache = this.caches.get(name);
+ if (cache == null) {
+ cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
+ this.caches.put(name, cache);
+ }
+ return cache;
+ }
+
+ @Autowired
+ public void setApplicationContext (ApplicationContext applicationContext) {
+ if (ShiroCacheManager.applicationContext == null) {
+ ShiroCacheManager.applicationContext = applicationContext;
+ }
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java
new file mode 100644
index 0000000..767cfdb
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroConfig.java
@@ -0,0 +1,121 @@
+package doumeemes.config.shiroMemory;
+
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.session.mgt.SessionManager;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.util.ThreadContext;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+import javax.servlet.Filter;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Shiro閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Configuration
+public class ShiroConfig {
+
+ @Value("${cache.session.expire}")
+ private int sessionExpireTime;
+
+ @Autowired
+ private ShiroCredentialsMatcher shiroCredentialsMatcher;
+
+ @Autowired
+ private ShiroSessionDAO shiroSessionDAO;
+
+ @Autowired
+ private ShiroCacheManager shiroCacheManager;
+
+ @Autowired
+ private ShiroRealm shiroRealm;
+
+ @Bean
+ public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+ DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+ autoProxyCreator.setProxyTargetClass(true);
+ return autoProxyCreator;
+ }
+
+ @Bean
+ public SessionManager sessionManager() {
+ ShiroSessionManager sessionManager = new ShiroSessionManager();
+ sessionManager.setSessionDAO(shiroSessionDAO);
+ return sessionManager;
+ }
+
+ @Bean
+ public SecurityManager securityManager() {
+ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+ securityManager.setRealm(shiroRealm);
+ securityManager.setSessionManager(this.sessionManager());
+ securityManager.setCacheManager(shiroCacheManager);
+ ThreadContext.bind(securityManager);
+ return securityManager;
+ }
+
+ @Bean
+ public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+ ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+ shiroFilterFactoryBean.setSecurityManager(securityManager);
+ Map<String, String> map = new LinkedHashMap<>();
+ // 璺緞鎷︽埅閰嶇疆
+ map.put("/system/login", "anon");
+ map.put("/system/wxLogin", "anon");
+ map.put("/system/wxProgramLogin", "anon");
+ map.put("/system/wxAccountLogin", "anon");
+ map.put("/system/initCompany", "anon");
+ map.put("/system/logout", "anon");
+ map.put("/common/captcha", "anon");
+ map.put("/statistics/**", "anon");
+ map.put("/dingding/push", "anon");
+// map.put("/ext/workorderExt/freshStatistics", "anon");
+ map.put("/dingding/jsapiTicket", "anon");
+ map.put("/dingding/ddLogin", "anon");
+ map.put("/dingding/getDingdingCorpId", "anon");
+ map.put("/lingyang/login", "anon");
+ map.put("/lingyang/loginDemo", "anon");
+ map.put("/edgp/**", "anon");
+ // - 鏀捐swagger
+ map.put("/doc.html", "anon");
+ map.put("/webjars/**", "anon");
+ map.put("/template/**", "anon");
+ map.put("/swagger-resources/**", "anon");
+ map.put("/v2/api-docs/**", "anon");
+ // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
+ map.put("/**", "authc");
+ shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
+ // 娣诲姞璁よ瘉杩囨护鍣�
+ Map<String, Filter> filters = new LinkedHashMap<>();
+ filters.put("authc", new ShiroAuthFilter());
+ shiroFilterFactoryBean.setFilters(filters);
+ return shiroFilterFactoryBean;
+ }
+
+ @Bean
+ public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+ AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+ authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
+ return authorizationAttributeSourceAdvisor;
+ }
+
+ @Bean
+ public ShiroSessionDAO getShiroSessionDAO () {
+ shiroSessionDAO.setExpireTime(sessionExpireTime);
+ return shiroSessionDAO;
+ }
+
+ @Bean
+ public ShiroRealm getShiroRealm () {
+ shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
+ return shiroRealm;
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java
new file mode 100644
index 0000000..3ee2b0e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroCredentialsMatcher.java
@@ -0,0 +1,45 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.utils.Utils;
+import doumeemes.dao.system.model.SystemUser;
+import doumeemes.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Shiro瀵嗙爜姣斿澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
+
+ @Lazy
+ @Autowired
+ private SystemUserService systemUserService;
+
+ @Override
+ public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
+ ShiroToken usernamePasswordToken = (ShiroToken) token;
+ SystemUser queryUserDto = new SystemUser();
+ queryUserDto.setUsername(usernamePasswordToken.getUsername());
+ queryUserDto.setDeleted(Boolean.FALSE);
+ SystemUser systemUser = systemUserService.findOne(queryUserDto);
+ if (systemUser == null) {
+ return Boolean.FALSE;
+ }
+ if(usernamePasswordToken.getDdLogin()){
+ return Boolean.TRUE;
+ }
+ if(usernamePasswordToken.getWxLogin()){
+ return Boolean.TRUE;
+ }
+ // 鍔犲瘑瀵嗙爜
+ String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
+ // 姣旇緝瀵嗙爜
+ return this.equals(pwd, systemUser.getPassword());
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java
new file mode 100644
index 0000000..a56eb80
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroRealm.java
@@ -0,0 +1,172 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.constants.ResponseStatus;
+import doumeemes.core.exception.BusinessException;
+import doumeemes.core.model.LoginUserInfo;
+import doumeemes.core.utils.Constants;
+import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
+import doumeemes.dao.ext.vo.CompanyExtListVO;
+import doumeemes.dao.ext.vo.CompanyUserExtListVO;
+import doumeemes.dao.ext.vo.DepartmentExtListVO;
+import doumeemes.dao.system.model.SystemDataPermission;
+import doumeemes.dao.system.model.SystemPermission;
+import doumeemes.dao.system.model.SystemRole;
+import doumeemes.dao.system.model.SystemUser;
+import doumeemes.service.ext.CompanyExtService;
+import doumeemes.service.ext.CompanyUserExtService;
+import doumeemes.service.ext.DepartmentExtService;
+import doumeemes.service.system.SystemDataPermissionService;
+import doumeemes.service.system.SystemPermissionService;
+import doumeemes.service.system.SystemRoleService;
+import doumeemes.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroRealm extends AuthorizingRealm {
+
+ @Lazy
+ @Autowired
+ private DepartmentExtService departmentExtService;
+ @Lazy
+ @Autowired
+ private SystemDataPermissionService systemDataPermissionService;
+ @Lazy
+ @Autowired
+ private CompanyExtService companyExtService;
+ @Lazy
+ @Autowired
+ private SystemUserService systemUserService;
+ @Lazy
+ @Autowired
+ private CompanyUserExtService companyUserExtService;
+
+ @Lazy
+ @Autowired
+ private SystemRoleService systemRoleService;
+
+ @Lazy
+ @Autowired
+ private SystemPermissionService systemPermissionService;
+ /**
+ * 閲嶅啓supports鏂规硶锛屼娇 Shiro 鑳藉璇嗗埆鑷畾涔夌殑 Token
+ * @param token
+ * @return
+ */
+ @Override
+ public boolean supports(AuthenticationToken token) {
+ return token instanceof ShiroToken;
+ }
+ /**
+ * 鏉冮檺澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+ @Override
+ protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+ LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
+ // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
+ SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+ authorizationInfo.addRoles(loginUserInfo.getRoles());
+ authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
+ return authorizationInfo;
+ }
+
+ /**
+ * 璁よ瘉澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+ @Override
+ protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException,BusinessException {
+ // 鑾峰彇鐢ㄦ埛鍚�
+ ShiroToken authenticationToken =(ShiroToken) token;
+ String username = authenticationToken.getPrincipal().toString();
+ boolean isDdLogin = authenticationToken.getDdLogin();
+ // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+ SystemUser queryDto = new SystemUser();
+ queryDto.setUsername(username);
+ queryDto.setDeleted(Boolean.FALSE);
+ SystemUser user = systemUserService.findOne(queryDto);
+ if (user == null) {
+ return null;
+ }
+ SystemRole role = new SystemRole();
+ SystemPermission per = new SystemPermission();
+ DepartmentExtListVO rootDepart = null,comDepart=null, depart = null;
+ List<Integer> dpList = null;
+ CompanyExtListVO com = null;
+ CompanyUserExtListVO cu =null;
+ if(Constants.equalsInteger(user.getType(),Constants.PlatType.admin)){
+ //濡傛灉鏄钩鍙扮敤鎴�
+ role.setType(Constants.ROLETYPE.plat);
+ per.setType(Constants.PlatType.admin);
+ }else{
+ if(authenticationToken.getCompanyId() == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒");
+ }
+ com = companyExtService.getModelById(authenticationToken.getCompanyId());
+ if(com == null || Constants.equalsInteger( com.getDeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ处鎴峰垹闄わ紒璇疯仈绯荤鐞嗗憳");
+ }
+ if(Constants.equalsInteger( com.getStatus(),Constants.ZERO) ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡绂佺敤锛�");
+ }
+ if(com.getOepnValidDate() != null && com.getOepnValidDate().before(new Date())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氬凡杩囦娇鐢ㄦ湁鏁堟湡锛�");
+ }
+ //濡傛灉鏄紒涓氱敤鎴�
+ QueryCompanyUserExtDTO c =new QueryCompanyUserExtDTO();
+ c.setUserId(user.getId());
+ c.setDeleted(Constants.ZERO);
+ c.setCompanyId(authenticationToken.getCompanyId());
+ cu = companyUserExtService.selectOne(c);
+ if(cu == null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴蜂笉瀛樺湪锛�");
+ }
+ if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
+ }
+ rootDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getRootDepartId());
+ comDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getComDepartId());
+ depart = departmentExtService.getModelById(c.getCompanyId(),cu.getDepartmentId());
+ if(rootDepart == null || comDepart == null || depart==null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴疯处鎴峰紓甯革紒");
+ }
+ role.setCompanyId(authenticationToken.getCompanyId());
+ role.setType(Constants.ROLETYPE.com);
+ per.setType(Constants.PlatType.company);
+ per.setRoleType(Constants.ROLETYPE.com);
+ per.setCompanyId(authenticationToken.getCompanyId());
+ SystemRole rt = new SystemRole();
+ rt.setType(Constants.ROLETYPE.com);
+ rt.setCompanyId(c.getCompanyId());
+ //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+ dpList =systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user,depart);
+
+ }
+ // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+ List<SystemRole> roles = systemRoleService.findByUserModel(user.getId(),role);
+ List<SystemPermission> permissions = systemPermissionService.findByUserModel(user.getId(),per);
+ LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,com,rootDepart,comDepart,depart,dpList,cu);
+ // 楠岃瘉鐢ㄦ埛
+ return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+ }
+
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java
new file mode 100644
index 0000000..1049556
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionDAO.java
@@ -0,0 +1,108 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Data
+@Slf4j
+//@Component
+public class ShiroSessionDAO implements SessionDAO {
+
+ private static final String KEY_PREFIX = "shiro:session:";
+
+ @Autowired
+ private ShiroCache shiroCache;
+
+ private int expireTime = 1800;
+
+ @Autowired
+ private ShiroTokenManager shiroTokenManager;
+
+ @Override
+ public Serializable create(Session session) {
+ if (session == null) {
+ log.error("session is null");
+ throw new UnknownSessionException("session is null");
+ }
+ Serializable sessionId = shiroTokenManager.build();
+ ((SimpleSession)session).setId(sessionId);
+ this.saveSession(session);
+ return sessionId;
+ }
+
+ @Override
+ public Session readSession(Serializable sessionId) throws UnknownSessionException{
+ if (sessionId == null) {
+ log.warn("session id is null");
+ return null;
+ }
+ if (sessionId instanceof String) {
+ // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+ shiroTokenManager.check((String) sessionId);
+ }
+ log.debug("read session from cache");
+ Session session = getSessionFromCache(sessionId);
+ if (session == null) {
+ throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
+ }
+ return session;
+ }
+
+ @Override
+ public void update(Session session) throws UnknownSessionException {
+ this.saveSession(session);
+ }
+
+ @Override
+ public void delete(Session session) {
+ if (session != null && session.getId() != null) {
+ shiroCache.remove(KEY_PREFIX + session.getId());
+ }
+ }
+
+ @Override
+ public Collection<Session> getActiveSessions() {
+ Set<Session> sessions = new HashSet<>();
+ Set<Object> keys = shiroCache.keys();
+ if (keys != null && keys.size() > 0) {
+ Iterator iter = keys.iterator();
+ while(iter.hasNext()) {
+ sessions.add((Session) shiroCache.get(iter.next()));
+ }
+ }
+ return sessions;
+ }
+
+ private void saveSession(Session session) throws UnknownSessionException {
+ if (session == null || session.getId() == null) {
+ log.error("session or session id is null");
+ throw new UnknownSessionException("session or session id is null");
+ }
+ shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
+ }
+
+ private Session getSessionFromCache (Serializable sessionId) {
+ Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
+ Session session = null;
+ if (object != null) {
+ session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
+ }
+ return session;
+ }
+
+ public void setExpireTime (int expireTime) {
+ this.expireTime = expireTime;
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java
new file mode 100644
index 0000000..352ffe9
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroSessionManager.java
@@ -0,0 +1,86 @@
+package doumeemes.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionContext;
+import org.apache.shiro.session.mgt.SessionKey;
+import org.apache.shiro.web.servlet.Cookie;
+import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.apache.shiro.web.session.mgt.WebSessionManager;
+import org.apache.shiro.web.util.WebUtils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+
+/**
+ * 鑷畾涔変細璇濈鐞嗗櫒
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
+
+ private static final String AUTH_TOKEN = "eva-auth-token";
+
+ @Override
+ protected void onStart(Session session, SessionContext context) {
+ super.onStart(session, context);
+ if (!WebUtils.isHttp(context)) {
+ log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
+ return;
+ }
+ HttpServletRequest request = WebUtils.getHttpRequest(context);
+ HttpServletResponse response = WebUtils.getHttpResponse(context);
+ Serializable sessionId = session.getId();
+ this.storeSessionId(sessionId, request, response);
+ request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
+ request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
+ }
+
+ @Override
+ public Serializable getSessionId(SessionKey key) {
+ Serializable sessionId = super.getSessionId(key);
+ if (sessionId == null && WebUtils.isWeb(key)) {
+ ServletRequest servletRequest = WebUtils.getRequest(key);
+ if (!(servletRequest instanceof HttpServletRequest)) {
+ log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
+ return null;
+ }
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ // 浠巆ookie涓幏鍙栬璇�
+ javax.servlet.http.Cookie[] cookies = request.getCookies();
+ if (cookies != null) {
+ for (javax.servlet.http.Cookie cookie : cookies) {
+ if (AUTH_TOKEN.equals(cookie.getName())) {
+ return cookie.getValue();
+ }
+ }
+ }
+ // 浠巋eader涓幏鍙栬璇�
+ return request.getHeader(AUTH_TOKEN);
+ }
+ return sessionId;
+ }
+
+ @Override
+ public boolean isServletContainerSessions() {
+ return false;
+ }
+
+ private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
+ if (currentId == null) {
+ String msg = "sessionId cannot be null when persisting for subsequent requests.";
+ throw new IllegalArgumentException(msg);
+ }
+ Cookie cookie = new SimpleCookie(AUTH_TOKEN);
+ cookie.setHttpOnly(false);
+ String idString = currentId.toString();
+ cookie.setValue(idString);
+ cookie.saveTo(request, response);
+ log.trace("Set session ID cookie for session with id {}", idString);
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java
new file mode 100644
index 0000000..7913e46
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroToken.java
@@ -0,0 +1,53 @@
+package doumeemes.config.shiroMemory;
+
+import org.apache.shiro.authc.*;
+
+/**
+ * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroToken extends UsernamePasswordToken {
+
+ /**
+ * 鍏徃ID
+ */
+ Integer companyId;
+ Boolean isDdLogin;
+ Boolean isWxLogin;
+
+ public ShiroToken() {
+ }
+ public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
+ super(username, password, false, (String)null);
+ this.companyId = companyId;
+ this.isDdLogin = isDdLogin;
+ this.isWxLogin = isWxLogin;
+ }
+
+ public Boolean getDdLogin() {
+ return isDdLogin;
+ }
+
+ public void setDdLogin(Boolean ddLogin) {
+ isDdLogin = ddLogin;
+ }
+
+
+ public Boolean getWxLogin() {
+ return isWxLogin;
+ }
+
+ public void setWxLogin(Boolean wxLogin) {
+ isWxLogin = wxLogin;
+ }
+
+ public Integer getCompanyId() {
+ return companyId;
+ }
+
+ public void setCompanyId(Integer companyId) {
+ this.companyId = companyId;
+ }
+}
diff --git a/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java b/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java
new file mode 100644
index 0000000..f9f6d3e
--- /dev/null
+++ b/server/src/main/java/doumeemes/config/shiroMemory/ShiroTokenManager.java
@@ -0,0 +1,24 @@
+package doumeemes.config.shiroMemory;
+
+import doumeemes.core.exception.UnSafeSessionException;
+
+import java.util.UUID;
+
+/**
+ * 榛樿Token绠$悊鍣�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+//@Component
+public class ShiroTokenManager {
+
+ String build() {
+ return UUID.randomUUID().toString();
+ }
+
+ void check(String token) throws UnSafeSessionException {
+ if (token == null || token.length() != 36) {
+ throw new UnSafeSessionException();
+ }
+ }
+}
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
index 8755537..91cb9cd 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelColumn.java
@@ -34,7 +34,7 @@
/**
* 瀵归綈鏂瑰紡
*/
- HorizontalAlignment align() default HorizontalAlignment.LEFT;
+ HorizontalAlignment align() default HorizontalAlignment.LEFT;
/**
* 鍒楄儗鏅壊
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
index 010996c..5ac8412 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
@@ -10,8 +10,10 @@
import org.apache.commons.lang3.CharUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
@@ -150,8 +152,188 @@
public void export (List<T> data, String fileName, HttpServletResponse response) {
this.export(data, fileName, DEFAULT_SHEET_NAME, response);
}
+ /**
+ * 瀵煎嚭鑷冲搷搴旀祦
+ * @param data 鏁版嵁
+ * @param fileName Excel鏂囦欢鍚�
+ * @param response HttpServletResponse瀵硅薄
+ */
+ public void exportWithFirstAndEnd (List<T> data, String fileName,String first,String end, HttpServletResponse response) {
+ this.exportWithFirstAndEnd(data, fileName, DEFAULT_SHEET_NAME, first,end,response);
+ }
/**
+ * 瀵煎嚭鑷冲搷搴旀祦
+ * @param data 鏁版嵁
+ * @param fileName Excel鏂囦欢鍚�
+ * @param sheetName Sheet鍚嶇О
+ * @param response HttpServletResponse瀵硅薄
+ */
+ public void exportWithFirstAndEnd (List<T> data, String fileName, String sheetName, String first,String end ,HttpServletResponse response) {
+ try {
+ String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+ response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+ response.setContentType("application/octet-stream");
+ response.setHeader("eva-opera-type", "download");
+ response.setHeader("eva-download-filename", encodeFileName);
+ this.exportWithFirstAndEnd(data, sheetName,first,end, response.getOutputStream());
+ } catch (IOException e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ }
+ }
+ /**
+ * 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
+ * @param data 鏁版嵁
+ * @param sheetName Sheet鍚嶇О
+ */
+ public void exportWithFirstAndEnd (List<T> data, String sheetName,String first,String end, OutputStream os) {
+ SXSSFWorkbook sxssfWorkbook;
+ try {
+ sxssfWorkbook = new SXSSFWorkbook();
+ Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+ // 鍒涘缓鍒楀ご
+ sheet.createFreezePane(0, 2);
+ sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,this.getColumns().size()-1));
+ Row title = sheet.createRow(0);
+ title.setHeight((short) 1000);
+ Cell c = title.createCell(0);
+ c.setCellValue(first);
+ configFirstCell(sxssfWorkbook,c);
+
+ Row header = sheet.createRow(1);
+ header.setHeight((short)600);
+ List<ColumnInfo> columns = this.getColumns();
+ for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+ ColumnInfo column = columns.get(columnIndex);
+ Cell cell = header.createCell(columnIndex);
+ cell.setCellValue(new HSSFRichTextString(column.columnConfig.name()));
+ // 鍒楀璁剧疆
+ if (column.columnConfig.width() == -1) {
+ sheet.setColumnWidth(columnIndex, column.columnConfig.name().length() * 2 * 256);
+ } else {
+ sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
+ }
+ // 璁剧疆鍒楀ご鍗曞厓鏍�
+ configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
+ }
+ // 鍒涘缓鏁版嵁璁板綍
+ for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
+ Row row = sheet.createRow(rowIndex + 2);
+ for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+ ColumnInfo column = columns.get(columnIndex);
+ Cell cell = row.createCell(columnIndex);
+ cell.setCellValue(getCellData(column, data.get(rowIndex)));
+ // 璁剧疆鏁版嵁鍗曞厓鏍�
+ configDataCell(sxssfWorkbook, cell, column.columnConfig);
+ }
+ }
+ if(StringUtils.isNotBlank(end)){
+ sheet.addMergedRegion(new CellRangeAddress(data.size()+2 ,data.size()+2,0,this.getColumns().size()-1));
+ Row endRow = sheet.createRow(data.size()+2);
+// endRow.setHeight((short) 600);
+ Cell c1 = endRow.createCell(0);
+ c1.setCellValue(end);
+ configEndCell(sxssfWorkbook,c1);
+ }
+ sxssfWorkbook.write(os);
+ os.close();
+ } catch (Exception e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ /**
+ * 閰嶇疆鏁版嵁鍗曞厓鏍�
+ */
+ private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(columnConfig.align());
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints(columnConfig.fontSize());
+ // 瀛椾綋棰滆壊
+ font.setColor(columnConfig.color().getIndex());
+ // 绮椾綋
+ font.setBold(columnConfig.bold());
+ // 鏂滀綋
+ font.setItalic(columnConfig.italic());
+ style.setFont(font);
+ // 杈规
+ configCellBorder(style);
+ style.setWrapText(true);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configFirstCell (SXSSFWorkbook workbook, Cell cell ) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(HorizontalAlignment.CENTER);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)24);
+ font.setBold(true);
+ style.setFont(font);
+ // 璁剧疆杈规
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configEndCell (SXSSFWorkbook workbook, Cell cell ) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)14);
+ style.setFont(font);
+ // 璁剧疆杈规
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(columnConfig.align());
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+// style.setFillForegroundColor(columnConfig.backgroundColor().getIndex());
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)11);
+ font.setColor(columnConfig.color().index);
+ font.setBold(true);
+ style.setFont(font);
+ // 璁剧疆杈规
+ style.setWrapText(true);
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
+ /**
* 鑾峰彇鍒楅泦鍚�
*/
private List<ColumnInfo> getColumns () {
diff --git a/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java b/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
index 54e3620..7c916a4 100644
--- a/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
+++ b/server/src/main/java/doumeemes/core/utils/WxMiniConfig.java
@@ -3,12 +3,7 @@
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
-import com.github.binarywang.wxpay.config.WxPayConfig;
-import com.github.binarywang.wxpay.constant.WxPayConstants;
-import com.github.binarywang.wxpay.service.WxPayService;
-import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
import doumeemes.biz.system.SystemDictDataBiz;
-import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
diff --git a/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java b/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
index 709a3e6..a21e31d 100644
--- a/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
+++ b/server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
@@ -33,14 +33,25 @@
@ExcelColumn(name="鏉ユ簮", valueMapping = "0=PC骞冲彴;1=閽夐拤骞冲彴;2=缇氱緤骞冲彴;3=EDGP骞冲彴;4=寰俊灏忕▼搴�",width = 6,align = HorizontalAlignment.CENTER)
private Integer orgin;
@ApiModelProperty(value = "浼佷笟鐢ㄦ埛缂栫爜", example = "1")
+ @ExcelColumn(name="浼佷笟鐢ㄦ埛ID", width = 6)
private Integer companyUserId;
+
+ @ApiModelProperty(value = "浼佷笟鍚嶇О")
+ @ExcelColumn(name="浼佷笟鍚嶇О", width = 16)
+ @TableField(exist = false)
+ private String companyName;
+
+ @ApiModelProperty(value = "浼佷笟鐢ㄦ埛鍚嶇О")
+ @ExcelColumn(name="浼佷笟鐢ㄦ埛鍚嶇О", width = 16)
+ @TableField(exist = false)
+ private String companyUserName;
@ApiModelProperty(value = "鐧诲綍鐢ㄦ埛鍚�")
@ExcelColumn(name="鐧诲綍鐢ㄦ埛鍚�")
private String loginUsername;
@ApiModelProperty(value = "鐧诲綍IP")
- @ExcelColumn(name="鐧诲綍IP", color = IndexedColors.RED, width = 8)
+ @ExcelColumn(name="鐧诲綍IP", width = 8)
private String ip;
@ApiModelProperty(value = "鐧诲綍鍦板潃")
@@ -68,24 +79,14 @@
private String serverIp;
@ApiModelProperty(value = "鏄惁鐧诲綍鎴愬姛")
- @ExcelColumn(name="鏄惁鐧诲綍鎴愬姛", valueMapping = "true=鏄�;false=鍚�", align = HorizontalAlignment.CENTER)
+ @ExcelColumn(name="鏄惁鎴愬姛", valueMapping = "true=鎴愬姛;false=澶辫触", align = HorizontalAlignment.CENTER)
private Boolean success;
@ApiModelProperty(value = "澶辫触鍘熷洜")
- @ExcelColumn(name="澶辫触鍘熷洜", color = IndexedColors.RED, width = 16)
+ @ExcelColumn(name="澶辫触鍘熷洜", width = 16)
private String reason;
@ApiModelProperty(value = "鐧诲綍鏃堕棿")
@ExcelColumn(name="鐧诲綍鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 10)
private Date loginTime;
- @ApiModelProperty(value = "浼佷笟鍚嶇О")
- @ExcelColumn(name="浼佷笟鍚嶇О", color = IndexedColors.RED, width = 16)
- @TableField(exist = false)
- private String companyName;
-
- @ApiModelProperty(value = "浼佷笟鐢ㄦ埛鍚嶇О")
- @ExcelColumn(name="浼佷笟鍚嶇О", color = IndexedColors.RED, width = 16)
- @TableField(exist = false)
- private String companyUserName;
-
}
diff --git a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
index c9fb3a3..d8eb021 100644
--- a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
@@ -241,7 +241,7 @@
queryDeviceExtDTO1.setRootDepartId(user.getRootDepartment().getId());
List<DeviceExtListVO> list1= deviceExtService.getListByCondition(queryDeviceExtDTO1);*/
if(list.size()>0){
- return ApiResponse.failed("璁惧缂栫爜锛屼笉鍏佽娣诲姞");
+ return ApiResponse.failed("璁惧缂栫爜宸插瓨鍦紝涓嶅厑璁告坊鍔�");
}
device.setDeleted(Constants.ZERO);
device.setCreateTime(new Date());
@@ -293,8 +293,8 @@
}
List<String> departName = new ArrayList<>();
List<String> procedureName = new ArrayList<>();
- plansList.forEach(s->{
-
+ int num =0;
+ for(DeviceImportDTO s : plansList){
if (StringUtils.isBlank(s.getDeviceName())
|| s.getDeviceName().length() > 50
|| StringUtils.isBlank(s.getDepartName())
@@ -303,14 +303,13 @@
|| StringUtils.isBlank(s.getFinishWarehouseLocationName())){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵煎叆鏁版嵁鍐呭鏈夎");
}
- if(isRepeatCode(s.getDeviceCode(),plansList)){
+ if(isRepeatCode(s,num,plansList)){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏂囨。涓澶囧彿銆�"+s.getDeviceCode()+"銆戦噸澶嶏紒");
}
departName.add(s.getDepartName());
procedureName.add(s.getProcedureName());
- });
-
-
+ num++;
+ }
plansList.forEach(s->{
@@ -431,12 +430,14 @@
});
}
- private boolean isRepeatCode(String deviceCode, List<DeviceImportDTO> plansList) {
- if(StringUtils.isNotBlank(deviceCode)){
+ private boolean isRepeatCode(DeviceImportDTO s,int num,List<DeviceImportDTO> plansList) {
+ if(StringUtils.isNotBlank(s.getDeviceCode())){
+ int tNum = 0;
for(DeviceImportDTO d :plansList){
- if(StringUtils.equals(deviceCode, d.getDeviceCode())){
+ if(num != tNum && StringUtils.equals(s.getDeviceCode(), d.getDeviceCode())){
return true;
}
+ tNum++;
}
}
return false;
diff --git a/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
index 8c7c205..cdd4609 100644
--- a/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/SystemLoginServiceImpl.java
@@ -1,8 +1,6 @@
package doumeemes.service.system.impl;
import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.iflytek.antelope.other.client.dto.resp.UserDTO;
import doumeemes.biz.system.SystemDictDataBiz;
import doumeemes.config.shiro.ShiroToken;
@@ -14,9 +12,7 @@
import doumeemes.core.utils.dingding.DingDingUtil;
import doumeemes.core.utils.dingding.LingyangUtil;
import doumeemes.core.utils.edpg.EdgpServerUtil;
-import doumeemes.core.utils.edpg.EdgpUtil;
import doumeemes.core.utils.edpg.bean.AppUserInfoModel;
-import doumeemes.dao.business.dto.CompanyInitDataDTO;
import doumeemes.dao.business.model.Company;
import doumeemes.dao.business.model.CompanyUser;
import doumeemes.dao.ext.CompanyExtMapper;
diff --git a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
index dc927b2..1c94047 100644
--- a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
@@ -19,18 +19,13 @@
import doumeemes.dao.ext.CompanyExtMapper;
import doumeemes.dao.ext.CompanyUserExtMapper;
import doumeemes.dao.ext.DepartmentExtMapper;
-import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
import doumeemes.dao.ext.dto.WxLoginDTO;
import doumeemes.dao.ext.dto.WxLoginOutDTO;
-import doumeemes.dao.ext.vo.CompanyUserExtListVO;
import doumeemes.dao.ext.vo.WxLoginVO;
import doumeemes.dao.system.SystemUserMapper;
import doumeemes.dao.system.dto.LoginDTO;
import doumeemes.dao.system.model.SystemLoginLog;
import doumeemes.dao.system.model.SystemUser;
-import doumeemes.service.common.CaptchaService;
-import doumeemes.service.ext.CompanyExtService;
-import doumeemes.service.ext.CompanyUserExtService;
import doumeemes.service.system.SystemLoginLogService;
import doumeemes.service.system.WxLoginService;
import lombok.extern.slf4j.Slf4j;
@@ -41,7 +36,6 @@
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/main/resources/application-standardPro.yml b/server/src/main/resources/application-standardPro.yml
index a40cccb..6d3132a 100644
--- a/server/src/main/resources/application-standardPro.yml
+++ b/server/src/main/resources/application-standardPro.yml
@@ -6,7 +6,6 @@
timeout: PT3H #琛ㄧず12灏忔椂
spring:
- # 鏁版嵁婧愰厤缃�
datasource:
url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/doumee_mes_standard_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml
index 72fcf23..c86705c 100644
--- a/server/src/main/resources/application.yml
+++ b/server/src/main/resources/application.yml
@@ -5,10 +5,9 @@
env: development
# env: production
-
spring:
# application:
-# name: doumeemes
+# name: doumeemes
profiles:
active: standard
# JSON杩斿洖閰嶇疆
@@ -32,7 +31,7 @@
cache:
session:
# 浼氳瘽杩囨湡鏃堕暱(s)
- expire: 18000
+ expire: 36000
captcha:
# 楠岃瘉鐮佽繃鏈熸椂闀�(s)
expire: 300
diff --git a/web_standard/.env.development b/web_standard/.env.development
index 1d53d1c..9b93c1d 100644
--- a/web_standard/.env.development
+++ b/web_standard/.env.development
@@ -14,11 +14,11 @@
VUE_APP_API_PREFIX = ''
# 鐒︽澗
-VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
+# VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
# VUE_APP_BASE_URL = 'http://192.168.0.134:10021/'
# 浠诲悍鏈湴
-# VUE_APP_BASE_URL = 'http://192.168.0.15:10021/'
+VUE_APP_BASE_URL = 'http://192.168.0.15:10021/'
# 姹熻悕
# VUE_APP_BASE_URL = 'http://192.168.0.35:10021/'
diff --git a/web_standard/public/template/material_import_template.xlsx b/web_standard/public/template/material_import_template.xlsx
index 6812b65..b8edec0 100644
--- a/web_standard/public/template/material_import_template.xlsx
+++ b/web_standard/public/template/material_import_template.xlsx
Binary files differ
diff --git a/web_standard/src/api/business/salaryParam.js b/web_standard/src/api/business/salaryParam.js
index 6a34dd9..ace1e8b 100644
--- a/web_standard/src/api/business/salaryParam.js
+++ b/web_standard/src/api/business/salaryParam.js
@@ -38,3 +38,23 @@
}
})
}
+
+
+/**
+// 淇敼
+export function updateById (data) {
+ return http.post('/ext/workorderExt/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return http.get(`/ext/workorderExt/${id}`)
+}
+
+export function outScanAppliances(params) {
+ return http.get('/ext/workorderExt/outScanAppliances', { params })
+}
+ */
+
+
+
--
Gitblit v1.9.3