Mr.Shi
2023-09-04 c7c49be8b15e6355dc19e8705dc7bc2de603e398
Merge branch 'dev' of ssh://139.186.142.91:29418/productDev/dmMes into dev
已添加30个文件
已修改4个文件
7548 ■■■■ 文件已修改
h5_standard/src/components/common/Access.vue 551 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5_standard/src/views/needToBeDealtWith/exWarehouse.vue 2051 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/common/config.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/InOutInfo.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/InOperation/InOperation.vue 686 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/OutOperation/OutOperation.vue 685 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-collapse/changelog.md 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue 402 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-collapse/package.json 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-collapse/readme.md 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/changelog.md 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/components/uni-icons/icons.js 1169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/components/uni-icons/uni-icons.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.css 663 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/package.json 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-icons/readme.md 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/changelog.md 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/package.json 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/readme.md 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/index.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_color.scss 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_radius.scss 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_space.scss 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_styles.scss 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_text.scss 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/setting/_variables.scss 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/styles/tools/functions.scss 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/theme.scss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/uni-scss/variables.scss 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
                                    &nbsp;/&nbsp;{{item.pmodelName ? item.pmodelName : '-'}}&nbsp;/&nbsp;{{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>
                  &nbsp;/&nbsp;{{ item.pmodelName ? item.pmodelName : '-' }}&nbsp;/&nbsp;{{ 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: {   // è½¬åº“单id
            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: {   // è½¬åº“单id
    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>
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">不良&nbsp;/&nbsp;</span>
                                <span class="error" v-else-if="items.qualityType === 2">报废 /&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{items.procedureName ? items.procedureName : '-'}}&nbsp;/&nbsp;</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">合格&nbsp;/&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;/&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;/&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</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">不良&nbsp;/&nbsp;</span>
                <span class="error" v-else-if="items.qualityType === 2">报废 /&nbsp;</span>
                <span v-else>-&nbsp;/&nbsp;</span>
                <span>{{ items.procedureName ? items.procedureName : '-' }}&nbsp;/&nbsp;</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">合格&nbsp;/&nbsp;</span>
                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;/&nbsp;</span>
                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;/&nbsp;</span>
                <span v-else>-&nbsp;/&nbsp;</span>
                <span>{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</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">合格&nbsp;<span>/</span></span>
                                <span class="yellow" v-else-if="item.qualityType == 1">不良&nbsp;<span>/</span></span>
                                <span class="red" v-else-if="item.qualityType == 2">报废&nbsp;<span>/</span></span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>&nbsp;{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                                <span>&nbsp;{{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">合格&nbsp;<span>/</span></span>
            <span class="yellow" v-else-if="item.qualityType == 1">不良&nbsp;<span>/</span></span>
            <span class="red" v-else-if="item.qualityType == 2">报废&nbsp;<span>/</span></span>
            <span v-else>-&nbsp;/&nbsp;</span>
            <span>&nbsp;{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</span>
            <span>&nbsp;{{ 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>
minipro_standard/common/config.js
@@ -14,5 +14,17 @@
        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'
    }
}
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>
minipro_standard/pages.json
@@ -109,7 +109,25 @@
            }
        }
    ],
        ,{
            "path" : "pages/OutOperation/OutOperation",
            "style" :
            {
                "navigationBarTitleText": "出库操作",
                "enablePullDownRefresh": false
            }
        }
        ,{
            "path" : "pages/InOperation/InOperation",
            "style" :
            {
                "navigationBarTitleText": "入库操作",
                "enablePullDownRefresh": false
            }
        }
    ],
    "subPackages": [{
            "root": "pages_adjust",
            "pages": [{
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">合格&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</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">合格&nbsp;<span>/</span>&nbsp;</span>
                            <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                            <span class="red" v-else-if="item.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                            <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</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">合格&nbsp;<span>/</span>&nbsp;</span>
                            <span class="yellow" v-else-if="item1.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                            <span class="red" v-else-if="item1.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                            <span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</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是前端开发中广泛使用的一个JavaScript框架,它可以让我们更轻松地管理页面的状态、渲染和交互。但是在编写Vue应用时,有时会遇到“SyntaxError: Unexpected token”报错,这个错误提示意味着代码中存在语法错误,JavaScript引擎无法解析,从而导致程序运行失败。本篇文章将介绍常见引起“SyntaxError: Unexpected token”的原因以及解决方法。'
                },
                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>
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">合格&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</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">合格&nbsp;<span>/</span>&nbsp;</span>
                            <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                            <span class="red" v-else-if="item.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                            <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</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">合格&nbsp;<span>/</span>&nbsp;</span>
                            <span class="yellow" v-else-if="item1.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                            <span class="red" v-else-if="item1.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                            <span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</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是前端开发中广泛使用的一个JavaScript框架,它可以让我们更轻松地管理页面的状态、渲染和交互。但是在编写Vue应用时,有时会遇到“SyntaxError: Unexpected token”报错,这个错误提示意味着代码中存在语法错误,JavaScript引擎无法解析,从而导致程序运行失败。本篇文章将介绍常见引起“SyntaxError: Unexpected token”的原因以及解决方法。'
                },
                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>
minipro_standard/uni_modules/uni-collapse/changelog.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
## 1.4.3(2022-01-25)
- ä¿®å¤ åˆå§‹åŒ–的时候 ï¼Œopen å±žæ€§å¤±æ•ˆçš„bug
## 1.4.2(2022-01-21)
- ä¿®å¤ å¾®ä¿¡å°ç¨‹åºresize后组件收起的bug
## 1.4.1(2021-11-22)
- ä¿®å¤ vue3中个别scss变量无法找到的问题
## 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,如何创建vue3项目,详见 [uni-app é¡¹ç›®æ”¯æŒ vue3 ä»‹ç»](https://ask.dcloud.net.cn/article/37834)
## 1.2.2(2021-07-21)
- ä¿®å¤ ç”±1.2.0版本引起的 change äº‹ä»¶è¿”回 undefined çš„Bug
## 1.2.1(2021-07-21)
- ä¼˜åŒ– ç»„件示例
## 1.2.0(2021-07-21)
- æ–°å¢ž ç»„件折叠动画
- æ–°å¢ž value\v-model å±žæ€§ ï¼ŒåŠ¨æ€ä¿®æ”¹é¢æ¿æŠ˜å çŠ¶æ€
- æ–°å¢ž title æ’æ§½ ï¼Œå¯å®šä¹‰é¢æ¿æ ‡é¢˜
- æ–°å¢ž border å±žæ€§ ï¼Œæ˜¾ç¤ºéšè—é¢æ¿å†…容分隔线
- æ–°å¢ž title-border å±žæ€§ ï¼Œæ˜¾ç¤ºéšè—é¢æ¿æ ‡é¢˜åˆ†éš”线
- ä¿®å¤ resize æ–¹æ³•失效的Bug
- ä¿®å¤ change äº‹ä»¶è¿”回参数不正确的Bug
- ä¼˜åŒ– H5、App å¹³å°è‡ªåŠ¨æ›´å…·å†…å®¹æ›´æ–°é«˜åº¦ï¼Œæ— éœ€è°ƒç”¨ reszie() æ–¹æ³•
## 1.1.7(2021-05-12)
- æ–°å¢ž ç»„件示例地址
## 1.1.6(2021-02-05)
- ä¼˜åŒ– ç»„件引用关系,通过uni_modules引用组件
## 1.1.5(2021-02-05)
- è°ƒæ•´ä¸ºuni_modules目录规范
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>
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>
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"
        }
      }
    }
  }
}
minipro_standard/uni_modules/uni-collapse/readme.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
## Collapse æŠ˜å é¢æ¿
> **组件名:uni-collapse**
> ä»£ç å—: `uCollapse`
> å…³è”组件:`uni-collapse-item`、`uni-icons`。
折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse)
#### å¦‚使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui äº¤æµç¾¤ï¼š871950839
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,如何创建vue3项目,详见 [uni-app é¡¹ç›®æ”¯æŒ vue3 ä»‹ç»](https://ask.dcloud.net.cn/article/37834)
## 1.1.5(2021-05-12)
- æ–°å¢ž ç»„件示例地址
## 1.1.4(2021-02-05)
- è°ƒæ•´ä¸ºuni_modules目录规范
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
    }
  ]
}
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>
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";
}
minipro_standard/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
Binary files differ
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"
        }
      }
    }
  }
}
minipro_standard/uni_modules/uni-icons/readme.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
## Icons å›¾æ ‡
> **组件名:uni-icons**
> ä»£ç å—: `uIcons`
用于展示 icons å›¾æ ‡ ã€‚
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
#### å¦‚使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui äº¤æµç¾¤ï¼š871950839
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中scss语法兼容问题
## 1.0.0(2021-11-18)
- init
minipro_standard/uni_modules/uni-scss/index.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
@import './styles/index.scss';
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是uni-ui提供的一套全局样式 ï¼Œé€šè¿‡ä¸€äº›ç®€å•的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。",
  "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"
        }
      }
    }
  }
}
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)
#### å¦‚使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui äº¤æµç¾¤ï¼š871950839
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';
minipro_standard/uni_modules/uni-scss/styles/setting/_border.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
.uni-border {
    border: 1px $uni-border-1 solid;
}
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;
}
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)
            }
        }
    }
}
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);
            }
        }
    }
}
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 */
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 */
}
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;
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;
};
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);
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);