xiaohaizhao преди 1 година
родител
ревизия
499c1adc3d

+ 2 - 1
App.vue

@@ -16,9 +16,10 @@ export default {
 
 	},
 	onHide: function () {
+		
 	},
 	globalData: {
-	
+		qrCodePrefix: "https://www.jiushengboard.cc/"
 	}
 }
 </script>

+ 10 - 4
components/My_search.vue

@@ -1,9 +1,9 @@
 <template>
     <view class="search-box">
-        <view class="search">
+        <view class="search" :style="{ background: background || '#F2F2F2' }">
             <icon class="icon" type="search" size="3.733vw" />
-            <input v-model="value" class="input" confirm-type="search" placeholder-style="font-size:3.733vw;"
-                :placeholder="placeholder" type="text" @confirm="onConfirm">
+            <input v-model="value" class="input" :disabled="disabled" confirm-type="search"
+                placeholder-style="font-size:3.733vw;" :placeholder="placeholder" type="text" @confirm="onConfirm">
             <icon v-if="value" class="icon" type="clear" size="3.733vw" @click="onClear" />
         </view>
         <slot />
@@ -19,6 +19,13 @@ export default {
         },
         onSearch: {
             type: Function
+        },
+        disabled: {
+            type: Boolean,
+            default: false
+        },
+        background: {
+            type: String
         }
     },
     data() {
@@ -49,7 +56,6 @@ export default {
         align-items: center;
         flex: 1;
         height: 30px;
-        background: #F2F2F2;
         border-radius: 50px;
         flex-shrink: 0;
         margin: 0 !important;

+ 195 - 109
components/my_form.vue

@@ -1,140 +1,184 @@
 <template>
     <view>
+        <view class="head" v-if="requiredFieldOnly">
+            <view class="label">
+                基本信息
+            </view>
+            <view class="content">
+                仅显示必填信息<text style="padding: 0 2.5px;" /> <u-switch activeColor="#C40C24" v-model="unShowAll" />
+            </view>
+        </view>
+        <slot name="head" />
         <block v-for="(item, index) in  list " :key="item.key">
-            <!-- 文本输入 -->
-            <view class="input-box" v-if="item.type == 'text'" :style="{ marginTop: tovw(item.marginTop || 0) }"
-                @click="focusLabel = item.label">
-                <view class="box" :class="item.unBorBot ? '' : 'borBot'">
-                    <view class="label">
-                        <text class="must" v-if="item.isMust">*</text>
-                        {{ item.label }}:
-                    </view>
-                    <view class="content-box">
-                        <view class="content">
-                            <input v-if="item.inputmode == 'number'" type="number"
-                                placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;"
-                                :focus="focusLabel == item.label" :placeholder="item.placeholder || '请填写' + item.label"
-                                :value="item.value" :style="{ width: item.value ? '220px' : '240px' }"
-                                @input="onInput($event, index)" :maxlength="item.maxlength || '499'" confirm-type="done" />
-                            <textarea v-else
-                                placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;"
-                                auto-height type="text" :focus="focusLabel == item.label"
-                                :placeholder="item.placeholder || '请填写' + item.label" :value="item.value"
-                                :style="{ width: item.value ? '220px' : '240px' }" @input="onInput($event, index)"
-                                :maxlength="item.maxlength || '499'" confirm-type="done" />
-                            <icon v-if="item.value" class="icon" type="clear" size="3.733vw" @click="onClearInput(index)" />
+            <block v-if="item.isMust || !unShowAll">
+                <!-- 文本输入 -->
+                <view class="input-box" v-if="item.type == 'text'" :style="{ marginTop: tovw(item.marginTop || 0) }"
+                    @click="focusLabel = item.label">
+                    <view class="box" :class="item.unBorBot ? '' : 'borBot'">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}:
                         </view>
-                        <view v-if="item.errText" class="err-text">
-                            <icon class="icon" color="#E3041F" type="clear" size="2.733vw" />
-                            {{ item.errText }}
+                        <view class="content-box">
+                            <view class="content">
+                                <input v-if="item.inputmode == 'number'" type="number"
+                                    placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;"
+                                    :focus="focusLabel == item.label" :placeholder="item.placeholder || '请填写' + item.label"
+                                    :value="item.value" :style="{ width: item.value ? '220px' : '240px' }"
+                                    @input="onInput($event, index)" :maxlength="item.maxlength || '499'"
+                                    confirm-type="done" />
+                                <textarea v-else
+                                    placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;"
+                                    auto-height type="text" :focus="focusLabel == item.label"
+                                    :placeholder="item.placeholder || '请填写' + item.label" :value="item.value"
+                                    :style="{ width: item.value ? '220px' : '240px' }" @input="onInput($event, index)"
+                                    :maxlength="item.maxlength || '499'" confirm-type="done" />
+                                <icon v-if="item.value" class="icon" type="clear" size="3.733vw"
+                                    @click="onClearInput(index)" />
+                            </view>
+                            <view v-if="item.errText" class="err-text">
+                                <icon class="icon" color="#E3041F" type="clear" size="2.733vw" />
+                                {{ item.errText }}
+                            </view>
                         </view>
                     </view>
                 </view>
-            </view>
-            <!-- 文本域 -->
-            <view class="textarea-box" v-else-if="item.type == 'textarea'">
-                <textarea class="textarea" :class="item.unBorBot ? '' : 'borBot'"
-                    placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;" type="text"
-                    :placeholder="item.placeholder || '请填写' + item.label" :value="item.value"
-                    @input="onInput($event, index)" :maxlength="item.maxlength || '499'" confirm-type="done" />
-            </view>
-            <!-- 自定义选项分类 -->
-            <view class="custom-class-box" v-else-if="item.type == 'customClass'"
-                :style="{ marginTop: tovw(item.marginTop || 0) }">
-                <view class="head">
-                    <view class="label">
-                        <text class="must" v-if="item.isMust">*</text>
-                        {{ item.label }}
-                    </view>
-                    <view class="state">
-                        {{ item.isMultipleChoice ? '可多选' : '仅单选' }}
-                    </view>
+                <!-- 文本域 -->
+                <view class="textarea-box" v-else-if="item.type == 'textarea'">
+                    <textarea class="textarea" :class="item.unBorBot ? '' : 'borBot'"
+                        placeholder-style="color: #BBBBBB;font-family: Source Han Sans SC, Source Han Sans SC;" type="text"
+                        :placeholder="item.placeholder || '请填写' + item.label" :value="item.value"
+                        @input="onInput($event, index)" :maxlength="item.maxlength || '499'" confirm-type="done" />
                 </view>
-                <view class="options">
-                    <view class="option"
-                        :class="item.isMultipleChoice ? (item.value.includes(option.value) ? 'active' : '') : (item.value == option.value ? 'active' : '')"
-                        v-for=" option  in  item.list " :key="option.value" hover-class="navigator-hover"
-                        @click="changOptions(option.value, index)">
-                        {{ option.remarks }}
+                <!-- 自定义选项分类 -->
+                <view class="custom-class-box" v-else-if="item.type == 'customClass'"
+                    :style="{ marginTop: tovw(item.marginTop || 0) }">
+                    <view class="head">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}
+                        </view>
+                        <view class="state">
+                            {{ item.isMultipleChoice ? '可多选' : '仅单选' }}
+                        </view>
+                    </view>
+                    <view class="options">
+                        <view class="option"
+                            :class="item.isMultipleChoice ? (item.value.includes(option.value) ? 'active' : '') : (item.value == option.value ? 'active' : '')"
+                            v-for=" option  in  item.list " :key="option.value" hover-class="navigator-hover"
+                            @click="changOptions(option.value, index)">
+                            {{ option.remarks }}
+                        </view>
                     </view>
                 </view>
-            </view>
-            <!-- 选择所在地区 -->
-            <picker class="region" @change="selectRegion($event, index)" mode='region' :disabled="item.disabled"
-                :value="item.value" v-else-if="item.type == 'region'"
-                :style="{ marginTop: tovw(item.marginTop || 0), opacity: item.disabled ? 0.7 : 1 }">
-                <view class="box" :class="item.unBorBot ? '' : 'borBot'">
-                    <view class="label">
-                        <text class="must" v-if="item.isMust">*</text>
-                        {{ item.label }}:
+                <!-- 选择所在地区 -->
+                <picker class="region" @change="selectRegion($event, index)" mode='region' :disabled="item.disabled"
+                    :value="item.value" v-else-if="item.type == 'region'"
+                    :style="{ marginTop: tovw(item.marginTop || 0), opacity: item.disabled ? 0.7 : 1 }">
+                    <view class="box" :class="item.unBorBot ? '' : 'borBot'">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}:
+                        </view>
+                        <view class="content-box">
+                            <view class="value" v-if="item.value.length">
+                                {{ item.value.join(",") }}
+                            </view>
+                            <view v-else class="placeholder" hover-class="none">
+                                {{ item.placeholder || '请选择' + item.label }}
+                            </view>
+                            <view v-if="!item.disabled" class="iconfont icon-a-wodetiaozhuan" />
+                        </view>
                     </view>
-                    <view class="content-box">
-                        <view class="value" v-if="item.value.length">
-                            {{ item.value.join(",") }}
+                </picker>
+                <!-- 日期 -->
+                <picker class="region" @change="selectRegion($event, index)" mode='date' :disabled="item.disabled"
+                    :value="item.value" v-else-if="item.type == 'date'"
+                    :style="{ marginTop: tovw(item.marginTop || 0), opacity: item.disabled ? 0.7 : 1 }">
+                    <view class="box" :class="item.unBorBot ? '' : 'borBot'">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}:
                         </view>
-                        <view v-else class="placeholder" hover-class="none">
-                            {{ item.placeholder || '请选择' + item.label }}
+                        <view class="content-box">
+                            <view class="value" v-if="item.value">
+                                {{ item.value }}
+                            </view>
+                            <view v-else class="placeholder" hover-class="none">
+                                {{ item.placeholder || '请选择' + item.label }}
+                            </view>
+                            <view v-if="!item.disabled" class="iconfont icon-a-wodetiaozhuan" />
                         </view>
-                        <view v-if="!item.disabled" class="iconfont icon-a-wodetiaozhuan" />
                     </view>
-                </view>
-            </picker>
-            <!-- 上传附件 -->
-            <view class="custom-class-box" v-else-if="item.type == 'upload'"
-                :style="{ marginTop: tovw(item.marginTop || 0) }">
-                <view class="head">
-                    <view class="label">
-                        <text class="must" v-if="item.isMust">*</text>
-                        {{ item.label }}
+                </picker>
+                <!-- 上传附件 -->
+                <view class="custom-class-box" v-else-if="item.type == 'upload'"
+                    :style="{ marginTop: tovw(item.marginTop || 0) }">
+                    <view class="head">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}
+                        </view>
+                        <view class="state">
+                            {{ item.placeholder }}
+                        </view>
                     </view>
-                    <view class="state">
-                        {{ item.placeholder }}
+                    <view class="content">
+                        <view class="file-box" v-for="file in item.value" :key="file.attachmentid">
+                            <image class="image" v-if="file.fileType == 'image'" :src="file.url" mode="aspectFill"
+                                lazy-load="true" @click="previewImg(file)" />
+                            <video v-else-if="file.fileType == 'video'" class="video" :poster="file.subfiles[0].url"
+                                :src="file.url" />
+                            <image class="delete" @click.stop="deleteFile(file, index)"
+                                src="https://yossys06593.obs.cn-east-3.myhuaweicloud.com:443/202404241713944430197B47af9b2f.png"
+                                mode="widthFix" />
+                        </view>
+                        <My_upload v-if="item.allowUpload" :showLoading="false" :accept="item.accept"
+                            @uploadCallback="uploadCallback($event, index)" @onLoading="onUploadLoading($event, index)">
+                            <view class="upload-box" hover-class="navigator-hover">
+                                <u-loading-icon v-if="item.loading" />
+                                <text v-else class="iconfont icon-xiazai" />
+                                <text style="margin-left: 5px;">上传</text>
+                            </view>
+                        </My_upload>
                     </view>
                 </view>
-                <view class="content">
-                    <view class="file-box" v-for="file in item.value" :key="file.attachmentid">
-                        <image class="image" v-if="file.fileType == 'image'" :src="file.url" mode="aspectFill"
-                            lazy-load="true" @click="previewImg(file)" />
-                        <video v-else-if="file.fileType == 'video'" class="video" :poster="file.subfiles[0].url"
-                            :src="file.url" />
-                        <image class="delete" @click.stop="deleteFile(file, index)"
-                            src="https://yossys06593.obs.cn-east-3.myhuaweicloud.com:443/202404241713944430197B47af9b2f.png"
-                            mode="widthFix" />
-                    </view>
-                    <my-upload v-if="item.allowUpload" :showLoading="false" :accept="item.accept"
-                        @uploadCallback="uploadCallback($event, index)" @onLoading="onUploadLoading($event, index)">
-                        <view class="upload-box" hover-class="navigator-hover">
-                            <u-loading-icon v-if="item.loading" />
-                            <text v-else class="iconfont icon-xiazai" />
-                            <text style="margin-left: 5px;">上传</text>
+                <!-- 开关 -->
+                <view class="region" v-else-if="item.type == 'switch'">
+                    <view class="box" :class="item.unBorBot ? '' : 'borBot'">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}:
+                        </view>
+                        <view class="content-box">
+                            <view />
+                            <u-switch activeColor="#70D95D" v-model="item.value" :disabled="item.disabled"
+                                @change="switchChange($event, index)" />
                         </view>
-                    </my-upload>
-                </view>
-            </view>
-            <!-- 开关 -->
-            <view class="region" v-else-if="item.type == 'switch'">
-                <view class="box" :class="item.unBorBot ? '' : 'borBot'">
-                    <view class="label">
-                        <text class="must" v-if="item.isMust">*</text>
-                        {{ item.label }}:
                     </view>
-                    <view class="content-box">
-                        <view />
-                        <u-switch activeColor="#70D95D" v-model="item.value" :disabled="item.disabled"
-                            @change="switchChange($event, index)" />
+                </view>
+                <!-- 性别 -->
+                <view class="region" v-else-if="item.type == 'sex'">
+                    <view class="box" :class="item.unBorBot ? '' : 'borBot'">
+                        <view class="label">
+                            <text class="must" v-if="item.isMust">*</text>
+                            {{ item.label }}:
+                        </view>
+                        <u-radio-group v-model="item.value" placement="row" @change="groupChange($event, index)">
+                            <u-radio :customStyle="{ marginRight: tovw(60) }" label="男" name="男" />
+                            <u-radio label="女" name="女" />
+                        </u-radio-group>
                     </view>
                 </view>
-            </view>
+            </block>
         </block>
     </view>
 </template>
 
 <script>
-import myUpload from "./my-upload.vue";
 import { formattedFiles, viewImage } from "../utils/settleFiles.js"
 export default {
     name: "my_form",
-    components: { myUpload },
     props: {
         form: {
             type: Array,
@@ -145,14 +189,22 @@ export default {
         },
         onUploading: {
             type: Function
+        },
+        requiredFieldOnly: {
+            type: Boolean
+        },
+        isShowAll: {
+            type: Function
         }
     },
     data() {
         return {
             list: [],
-            focusLabel: ""
+            focusLabel: "",
+            unShowAll: false,
         }
     },
+
     watch: {
         form: {
             handler: function (newVal) {
@@ -164,6 +216,9 @@ export default {
                 }
             },
             immediate: true,
+        },
+        unShowAll: function (newVal) {
+            this.$emit("isShowAll", newVal)
         }
     },
     async created() {
@@ -337,6 +392,10 @@ export default {
             this.$set(this.list[index], 'loading', e)
             this.$emit("onUploading", e)
         },
+        groupChange(e, index) {
+            this.$set(this.list[index], 'loading', e)
+            this.verify()
+        },
         selectRegion({ detail }, index) {
             this.$set(this.list[index], 'value', detail.value)
             this.verify()
@@ -419,6 +478,33 @@ export default {
 
 
 <style lang="scss">
+.head {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 100vw;
+    height: 45px;
+    background: #F7F7F7;
+    padding: 0 10px;
+    box-sizing: border-box;
+
+    .label {
+        font-family: PingFang SC, PingFang SC;
+        font-weight: bold;
+        font-size: 15px;
+        color: #333333;
+        line-height: 22px;
+    }
+
+    .content {
+        display: flex;
+        align-items: center;
+        font-family: PingFang SC, PingFang SC;
+        font-size: 14px;
+        color: #999999;
+    }
+}
+
 .borBot {
     border-bottom: 1px #DDDDDD solid;
 }

+ 5 - 0
main.js

@@ -21,6 +21,11 @@ import slideshow from './components/slideshow.vue';
 Vue.component("slideshow", slideshow);
 import storeInfo from './components/storeInfo.vue';
 Vue.component("storeInfo", storeInfo);
+import my_form from './components/my_form.vue';
+Vue.component("my_form", my_form);
+import My_upload from './components/my-upload.vue';
+Vue.component("My_upload", My_upload);
+
 
 
 

+ 3 - 4
packageA/dailyYttendance/makePoster.vue

@@ -6,11 +6,11 @@
                     (请拖动到下方编辑、保存海报)
                 </text>
             </view>
-            <my-upload @uploadCallback="handleFileLink">
+            <My_upload @uploadCallback="handleFileLink">
                 <view class="right">
                     更换背景图
                 </view>
-            </my-upload>
+            </My_upload>
         </view>
         <view class="painter-box">
             <view>
@@ -90,14 +90,13 @@
 </template>
 
 <script>
-import myUpload from "../../components/my-upload.vue";
 import lPainter from "../../uni_modules/lime-painter/components/l-painter/l-painter.vue"
 import lPainterView from "../../uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue"
 import lPainterText from "../../uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue"
 import lPainterImage from "../../uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue"
 import lPainterQrcode from "../../uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue"
 export default {
-    components: { lPainter, lPainterView, lPainterText, lPainterImage, lPainterQrcode, myUpload },
+    components: { lPainter, lPainterView, lPainterText, lPainterImage, lPainterQrcode },
     data() {
         return {
             detail: {},

+ 2 - 6
packageA/fullView/upload.vue

@@ -1,6 +1,6 @@
 <template>
     <view>
-        <my-form ref="form" :form="form" @isUncomplete="isUncomplete" @onUploading="onUploading" />
+        <my_form ref="form" :form="form" @isUncomplete="isUncomplete" @onUploading="onUploading" />
         <view class="footer">
             <view class="but" :class="(uncomplete || onUpload) ? 'forbidden' : ''" hover-class="navigator-hover"
                 @click="(uncomplete || onUpload) ? '' : submit()">
@@ -12,11 +12,7 @@
 </template>
 
 <script>
-import myForm from "../../components/my_form.vue"
 export default {
-    components: {
-        myForm
-    },
     data() {
         return {
             form: [],
@@ -27,7 +23,7 @@ export default {
         }
     },
     onUnload() {
-        if(!this.isSubmit) this.$refs.form.deleteFiles()
+        if (!this.isSubmit) this.$refs.form.deleteFiles()
     },
     onLoad(options) {
         this.pageType = options.pageType == '设计' ? 4 : 5

+ 2 - 0
pages.json

@@ -86,6 +86,8 @@
 		"root": "team",
 		"pages": [{
 			"path": "team/index"
+		}, {
+			"path": "team/getInvite"
 		}]
 	}],
 	"preloadRule": {

+ 4 - 7
pages/index/modules/bottomSuspensionFrame.vue

@@ -12,7 +12,7 @@
                 @click="onClick('cloud', '工作台')" />
         </swiper-item>
 
-        <swiper-item class="swiper-item" item-id="cloud">
+        <swiper-item v-if="!sightseer" class="swiper-item" item-id="cloud">
             <image class="image" :src="showPageName == '工作台' ? '/static/c+unselected.svg' : '/static/c+selected.svg'"
                 mode="widthFix" @click="onClick('cloud', '工作台')" />
             <block v-for="item in cloud" :key="item.name">
@@ -45,8 +45,6 @@ export default {
                 name: "案例"
             }, {
                 name: "视频"
-            }, {
-                name: "我的"
             }],
             cloud: [{
                 name: "工作台"
@@ -83,10 +81,9 @@ export default {
             }
             function render(that) {
                 let sightseer = uni.getStorageSync('userMsg').usertype == 99;
-                if (!that.sightseer) that.index.pop();
-                that.sightseer = sightseer
-                console.log("是否游客", that.sightseer)
-                console.log(that.index)
+                that.sightseer = sightseer;
+                console.log('是否游客', sightseer)
+                if (sightseer) that.index = that.index.concat({ name: "我的" })
             }
         },
         onClick(current, name, update = false, params = null) {

+ 1 - 3
store/deliveryAddress/insert.vue

@@ -1,6 +1,6 @@
 <template>
     <My_listbox :pullDown="false" boxBackground="#fff">
-        <my-form ref="form" :form="form" @isUncomplete="isUncomplete" />
+        <my_form ref="form" :form="form" @isUncomplete="isUncomplete" />
         <view class="footer">
             <view class="add" :class="uncomplete ? 'forbidden' : ''" hover-class="navigator-hover"
                 @click="uncomplete || loading ? '' : submit()">
@@ -14,10 +14,8 @@
 </template>
 
 <script>
-import myForm from "../../components/my_form.vue";
 
 export default {
-    components: { myForm },
     data() {
         return {
             form: [],

+ 287 - 0
team/team/getInvite.vue

@@ -0,0 +1,287 @@
+<template>
+    <view>
+
+        <my_form ref="form" :form="form" @isUncomplete="isUncomplete" @isShowAll="isShowAll" requiredFieldOnly>
+            <template v-if="isShow" slot="head">
+                <view class="headportrait" hover-class="navigator-hover">
+                    <view class="content">
+                        <view class="label">
+                            头像:
+                        </view>
+                        <My_upload maxCount="1" @onLoading="imageOnLoading" @uploadCallback="uploadCallback">
+                            <view style="display: flex;align-items: center;">
+                                <u--image :width="56" :height="56" shape="circle" :src="headportrait">
+                                    <template v-slot:loading>
+                                        <u-loading-icon />
+                                    </template>
+                                </u--image>
+                                <view style="width: 183px;" />
+                                <view class="iconfont icon-a-wodetiaozhuan" />
+                            </view>
+                        </My_upload>
+                    </view>
+                </view>
+            </template>
+        </my_form>
+        <view style="height: 70px;" />
+        <view class="footer">
+            <view class="add" :class="uncomplete ? 'forbidden' : ''" hover-class="navigator-hover"
+                @click="uncomplete || loading ? '' : submit()">
+                <u-loading-icon v-if="loading" />
+                <block v-else>
+                    提交
+                </block>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+
+export default {
+    data() {
+        return {
+            sys_enterpriseid: 8691,
+            form: [],
+            attachmentids: [],
+            uncomplete: true,
+            copyUncomplete: true,
+            loading: false,
+            headportrait: "https://yossys06593.obs.cn-east-3.myhuaweicloud.com:443/202404231713854678447B26b4363.svg",
+            userid: 0,
+            isShow: true,
+        }
+    },
+    onLoad(options) {
+        console.log("被邀请加入团队", options)
+        const systemInitIsComplete = this.$Http.systemInitIsComplete;
+        if (!systemInitIsComplete || typeof systemInitIsComplete == 'object') {
+            this.$Http.HomePageStartRendering = render(this)
+        } else {
+            render(this)
+        }
+        function render(that) {
+            let count = setInterval(() => {
+                if (uni.getStorageSync('userMsg').token) {
+                    clearInterval(count)
+                    let user = uni.getStorageSync('userMsg');
+                    that.userid = user.userid;
+                    if (user.usertype == 99) {
+                        that.init();
+                    } else {
+                        uni.showModal({
+                            title: '提示',
+                            content: '您已加入过团队',
+                            showCancel: false,
+                            confirmText: '确定',
+                            confirmColor: '#C40C24',
+                            success: ({ confirm }) => {
+                                if (confirm) uni.redirectTo({
+                                    url: '/pages/index/index',
+                                })
+                            }
+                        });
+                    }
+                }
+            }, 100);
+            setTimeout(() => {
+                clearInterval(count)
+            }, 3000)
+        }
+        uni.setNavigationBarTitle({
+            title: '人员信息'
+        });
+    },
+    methods: {
+        init() {
+            let form = [{
+                key: "name",
+                type: "text",
+                label: "姓名",
+                isMust: true,//是否必填
+                value: "",
+            }, {
+                key: "phonenumber",
+                type: "text",
+                label: "手机号",
+                isMust: true,//是否必填
+                value: "",
+                placeholder: "请输入收货人手机号",
+                inputmode: 'number',
+                verify: [this.getReg("phonenumber")]
+            }, {
+                key: "sex",
+                type: "sex",
+                label: "性别",
+                value: "男",
+            }, {
+                key: "birthday",
+                type: "date",
+                label: "生日",
+                value: "",
+                placeholder: "请选择出生日期",
+            }, {
+                key: "email",
+                type: "text",
+                label: "邮箱",
+                isMust: false,//是否必填
+                value: "",
+                verify: [this.getReg("email")]
+            }, {
+                key: "position",
+                type: "text",
+                label: "店内职位",
+                isMust: false,//是否必填
+                value: "",
+            }];
+            this.form = form;
+        },
+        isUncomplete(uncomplete) {
+            this.uncomplete = uncomplete;
+        },
+        submit() {
+            this.loading = true;
+            let that = this;
+            this.$refs.form.submit().then(data => {
+                this.$Http.basic({
+                    "id": 20240428111902,
+                    "content": {
+                        "sys_enterpriseid": this.sys_enterpriseid,
+                        ...data
+                    }
+                }).then(res => {
+                    this.loading = false;
+                    console.log("加入团队", res)
+                    if (this.cutoff(res.msg)) return;
+                    this.loading = true;
+                    if (this.attachmentids.length) {
+                        this.uploadCallback(this.attachmentids, "sys_users", this.userid).then(s => {
+                            if (s) getUserMsg()
+                        })
+                    } else {
+                        getUserMsg()
+                    }
+                    function getUserMsg() {
+                        that.$Http.wechatLogin().then(token => {
+                            that.loading = false;
+                            uni.showModal({
+                                title: '提示',
+                                content: '成功加入团队',
+                                showCancel: false,
+                                confirmText: '确定',
+                                confirmColor: '#C40C24',
+                                success: ({ confirm }) => {
+                                    if (confirm) uni.redirectTo({
+                                        url: '/pages/index/index',
+                                    })
+                                }
+                            });
+                        })
+                    }
+                })
+            })
+        },
+        isShowAll(e) {
+            this.isShow = !e;
+        },
+        imageOnLoading(e) {
+            if (e) {
+                this.copyUncomplete = this.uncomplete;
+                this.uncomplete = true;
+            } else {
+                this.uncomplete = this.copyUncomplete;
+            }
+        },
+        uploadCallback(attachmentids, ownertable = 'temporary', ownerid = '99999999') {
+            if (ownertable == 'temporary') this.imageOnLoading(true)
+            return new Promise((resolve, reject) => {
+                this.$Http.basic({
+                    "classname": "system.attachment.Attachment",
+                    "method": "createFileLink",
+                    "content": {
+                        "usetype": "headportrait",
+                        ownertable,
+                        ownerid,
+                        attachmentids
+                    },
+                }).then(res => {
+                    console.log('绑定附件', res)
+                    if (ownertable == 'temporary') this.imageOnLoading(false)
+                    if (this.cutoff(res.msg)) return resolve(false);
+                    resolve(true)
+                    if (ownertable == 'temporary' && this.linksid) this.$Http.basic({
+                        "classname": "system.attachment.Attachment",
+                        "method": "deleteFileLink",
+                        "content": {
+                            linksids: [this.linksid]
+                        }
+                    }).then(res => {
+                        console.log("处理删除附件", res)
+                        if (this.cutoff(res.msg)) return;
+                    });
+                    if (ownertable == 'temporary') {
+                        this.attachmentids = attachmentids;
+                        this.headportrait = res.data[0].url;
+                        this.linksid = res.data[0].linksid;
+                    }
+                })
+            })
+
+        }
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.headportrait {
+    width: 100vw;
+    padding-left: 10px;
+    background: #fff;
+
+    .content {
+        display: flex;
+        align-items: center;
+        border-bottom: 1px solid #DDDDDD;
+        box-sizing: border-box;
+        height: 76px;
+        padding: 10px;
+        padding-left: 0;
+
+        .label {
+            font-family: Source Han Sans SC, Source Han Sans SC;
+            font-size: 14px;
+            color: #666666;
+            width: 110px;
+        }
+
+    }
+}
+
+.footer {
+    position: fixed;
+    bottom: 0;
+    width: 100vw;
+    height: 65px;
+    background: #FFFFFF;
+    box-shadow: 0px -2px 6px 1px rgba(0, 0, 0, 0.16);
+    box-sizing: border-box;
+    padding: 5px 10px;
+
+    .add {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 100%;
+        height: 45px;
+        background: #C30D23;
+        border-radius: 5px;
+        font-family: PingFang SC, PingFang SC;
+        font-size: 14px;
+        color: #FFFFFF;
+    }
+
+    .forbidden {
+        opacity: .6;
+    }
+}
+</style>

+ 26 - 3
team/team/index.vue

@@ -1,13 +1,36 @@
 <template>
     <view>
-        团队管理
+        <u-tabs :scrollable="false" lineColor="#C30D23" :activeStyle="{ color: '#C30D23', fontWeight: 'bold' }" :list="tabs"
+            @click="changeCurrent" :current="current" />
+
+        <users ref="人员" v-show="pageNmae == '人员'" />
     </view>
 </template>
 
 <script>
+import users from "./modules/users.vue"
 export default {
-
+    components: { users },
+    data() {
+        return {
+            current: 1,
+            pageNmae: "人员",
+            tabs: [{
+                name: '经销商',
+            }, {
+                name: '人员',
+            }, {
+                name: '门店',
+            }]
+        }
+    },
+    methods: {
+        changeCurrent({ index, name }) {
+            this.current = index;
+            this.pageNmae = name;
+        }
+    },
 }
 </script>
 
-<style></style>
+<style lang="scss" scoped></style>

+ 136 - 0
team/team/modules/users.vue

@@ -0,0 +1,136 @@
+<template>
+    <view class="">
+        <view class="search-box">
+            <My_search background="#fff" @onSearch="onSearch" />
+        </view>
+        <view class="head">
+            <text>
+                人员
+            </text>
+            <text>
+                共{{ total }}个
+            </text>
+        </view>
+
+        <My_listbox ref="List" @getlist="getList" bottomHeight="70">
+
+
+        </My_listbox>
+
+        <view class="footer">
+            <navigator class="insert" url="">
+                新增人员
+            </navigator>
+            <navigator class="invite" url="">
+                邀请人员
+            </navigator>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            "content": {
+                "where": {
+                    "condition": ""
+                }
+            },
+            total: 0,
+        }
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        init() {
+            this.getList(true)
+        },
+        getList(init = false) {
+            if (this.paging(this.content, init)) return;
+            this.$Http.basic({
+                "id": "20240410161802",
+                content: this.content
+            }).then(res => {
+                console.log("人员列表", res)
+                this.$refs.List.RefreshToComplete()
+                if (this.cutoff(res.msg)) return;
+                /*     res.data = res.data.map(v => {
+                        v.cover = v.attinfos.length ? this.getSpecifiedImage(v.attinfos.find(s => s.usetype == "sa_fad") || v.attinfos[0]) : uni.getStorageSync("site").logo || ''
+                        return v
+                    }) */
+                this.total = res.total;
+                this.list = res.pageNumber == 1 ? res.data : this.list.concat(res.data), this.colors;
+                this.content = this.$refs.List.paging(this.content, res)
+            })
+        },
+        onSearch(condition) {
+            this.content.where.condition = condition;
+            this.getList(true)
+        }
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.search-box {
+    margin-top: 10px;
+    padding: 0 10px;
+    box-sizing: border-box;
+}
+
+.head {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    height: 37px;
+    padding: 0 10px;
+    box-sizing: border-box;
+    font-family: Source Han Sans SC, Source Han Sans SC;
+    font-size: 12px;
+    color: #666666;
+}
+
+.footer {
+    position: fixed;
+    bottom: 0;
+    display: flex;
+    justify-content: space-between;
+    width: 100vw;
+    height: 65px;
+    background: #FFFFFF;
+    box-shadow: 0px -2px 6px 1px rgba(0, 0, 0, 0.16);
+    padding: 5px 10px;
+    box-sizing: border-box;
+
+    .insert {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 168px;
+        height: 45px;
+        background: #FFFFFF;
+        border-radius: 5px;
+        border: 1px solid #999999;
+        font-family: PingFang SC, PingFang SC;
+        font-size: 16px;
+        color: #666666;
+        box-sizing: border-box;
+    }
+
+    .invite {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 177px;
+        height: 45px;
+        background: #C30D23;
+        border-radius: 5px;
+        font-family: PingFang SC, PingFang SC;
+        font-weight: 500;
+        font-size: 16px;
+        color: #FFFFFF;
+    }
+}
+</style>