Zory 2 долоо хоног өмнө
parent
commit
367bee26c3

+ 33 - 0
src/api/model/storeAddress.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    get: {
+        url: `${config.API_URL}/store-address/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/store-address/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/store-address/del`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/store-address/batch`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 19 - 0
src/api/model/storeLog.js

@@ -0,0 +1,19 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    recharge: {
+        url: `${config.API_URL}/store/log/recharge`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    log: {
+        url: `${config.API_URL}/store/log/logs`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+}

+ 33 - 0
src/api/model/storeUser.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    get: {
+        url: `${config.API_URL}/store/member/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/store/member/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/store/member/del`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/store/member/batch`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 11 - 0
src/views/manage/user/factory/components/form.vue

@@ -64,6 +64,14 @@
                                     <div class="el-form-item-msg">来源为门店,所有的订单都不会抽成</div>
                                 </el-form-item>
                             </el-col>
+                            <el-col :span="24">
+                                <el-form-item label="每日承单能力" prop="order">
+                                    <el-input type="number" v-model="formData.order" clearable placeholder="请输入每日承单能力">
+                                        <template #append>单</template>
+                                    </el-input>
+                                    <div class="el-form-item-msg">超出该设置单数后,该地址不会收到新订单</div>
+                                </el-form-item>
+                            </el-col>
                         </el-row>
                     </fieldset>
                     <fieldset v-if="mode=='add'">
@@ -131,6 +139,9 @@ export default{
                 name: [
                     {required: true, message: '请输入'}
                 ],
+                order: [
+                    {required: true, message: '请输入'}
+                ],
                 source: [
                     {required: true, message: '请选择'}
                 ],

+ 7 - 6
src/views/manage/user/factory/components/table.vue

@@ -29,6 +29,11 @@
                 <div class="status-danger" v-else>门店</div>
             </template>
         </el-table-column>
+        <el-table-column label="每日承单能力" prop="login_at" width="180">
+            <template #default="scope">
+                {{scope.row.order}}单
+            </template>
+        </el-table-column>
         <el-table-column label="登录账号" prop="truename" width="150">
             <template #default="scope">
                 <span v-if="scope.row.username">{{ scope.row.username }}</span>
@@ -38,12 +43,8 @@
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
         <el-table-column label="状态" prop="status" width="120" align="center">
             <template #default="scope">
-                <el-popconfirm title="确定要启用或冻结该账号吗?" @confirm="table_state(scope.row)">
-                    <template #reference>
-                        <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                        <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                    </template>
-                </el-popconfirm>
+                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
             </template>
         </el-table-column>
         <el-table-column label="操作" width="200" align="right" fixed="right">

+ 297 - 0
src/views/manage/user/store/address/form.vue

@@ -0,0 +1,297 @@
+<!--
+ * @Descripttion: 用户选择器
+ * @version: 1.0
+ * @Author: Zory
+ * @Date: 2024年1月10日21:46:29
+-->
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+        <div class="main">
+            <div class="main-left">
+                <div class="main-top">
+                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
+                        <el-row :gutter="10">
+                            <el-col :span="18" :xs="12">
+                                <el-form-item label=" " prop="truename">
+                                    <el-input v-model="searchKey.truename" placeholder="请输入代理名称" clearable
+                                        :style="{width: '100%'}"></el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6" :xs="12">
+                                <el-form-item>
+                                    <div class="search-btn">
+                                        <el-button type="primary" @click="searchForm">搜索</el-button>
+                                    </div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </div>
+                <div class="main-body-wrap" v-if="!multiple">
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
+                        <el-table-column width="50" fixed="left">
+                            <div class="checkbox"></div>
+                        </el-table-column>
+                        <el-table-column label="地址名称" width="150" fixed="left" prop="name">
+                            <template #default="scope">
+                                {{scope.row.name?scope.row.name:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="地址ID" width="150" prop="factory_id"></el-table-column>
+                        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+                        <el-table-column label="联系人" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.contact_name?scope.row.contact_name:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="联系电话" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.contact_mobile?scope.row.contact_mobile:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="详细地址" prop="login_at" width="280">
+                            <template #default="scope">
+                                {{scope.row.address?scope.row.address:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="注册来源" prop="login_at" width="120">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.source==1">代理</div>
+                                <div class="status-danger" v-else>门店</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="每日承单能力" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.order}}单
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="登录账号" prop="truename" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.username">{{ scope.row.username }}</span>
+                                <span class="status-danger" v-else>未设置</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                        <el-table-column label="状态" prop="status" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                            </template>
+                        </el-table-column>
+                    </scTable>
+                </div>
+                <div class="main-body-wrap" v-else>
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
+                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                        <el-table-column label="地址名称" width="150" fixed="left" prop="name">
+                            <template #default="scope">
+                                {{scope.row.name?scope.row.name:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="地址ID" width="150" prop="factory_id"></el-table-column>
+                        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+                        <el-table-column label="联系人" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.contact_name?scope.row.contact_name:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="联系电话" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.contact_mobile?scope.row.contact_mobile:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="详细地址" prop="login_at" width="280">
+                            <template #default="scope">
+                                {{scope.row.address?scope.row.address:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="注册来源" prop="login_at" width="120">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.source==1">代理</div>
+                                <div class="status-danger" v-else>门店</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="每日承单能力" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.order}}单
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="登录账号" prop="truename" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.username">{{ scope.row.username }}</span>
+                                <span class="status-danger" v-else>未设置</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                        <el-table-column label="状态" prop="status" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                            </template>
+                        </el-table-column>
+                    </scTable>
+                </div>
+            </div>
+        </div>
+		<template #footer>
+			<el-button @click="visible=false" >取 消</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
+		</template>
+    </el-dialog>
+</template>
+
+<script>
+export default{
+    emits: ['success', 'closed'],
+    props: {
+        multiple: { type: Boolean, default: false },
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"关联新洗衣地址",
+                edit:"关联新洗衣地址"
+            },
+            list: {
+                apiObj: this.$API.factory.list
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            searchKey:{},
+            selectData:[]
+        }
+    },
+    methods:{
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        submit(){
+            if (this.selectData.length == 0)
+            {
+                return this.$message.error("请选择数据");
+            }
+            this.isSaveing = false;
+            this.visible = false;
+            if (this.multiple){
+                this.$emit('success', this.selectData);
+            } else {
+                this.$emit('success', this.selectData[0]);
+            }
+        },
+        getRowKeys(data){
+            return data.id;
+        },
+        clearAll(){
+            this.selectData = [];
+        },
+        removeUser(index,name){
+            this.selectData.splice(index, 1);
+            console.log(name)
+        },
+        handleCurrentChange(data){
+            this.selectData = [data];
+        },
+        selectionChange(data){
+            this.selectData = data;
+        },
+        searchForm(){
+            this.$refs.table.upData(this.searchKey)
+        },
+        fristName(name){
+            return name.substring(0,1);
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.main{
+    display: flex;
+    border: 1px solid #dfe1e6;
+}
+.main-left{
+    overflow: hidden;
+    flex: 1;
+    .main-body-wrap{
+        position: relative;
+        height: 380px;
+    }
+}
+.main-top{
+    position: relative;
+    padding: 10px 0;
+    border-bottom: 1px solid #dfe1e6;
+    &.is-right{
+        height:53px;
+        display:flex;
+        align-items:center;
+        padding:0 10px;
+        justify-content:space-between;
+    }
+}
+.main-body.is-right{
+    padding: 8px 16px;
+    overflow-y: auto;
+    position: relative;
+    height: calc(100% - 53px);
+    max-height: 380px;
+}
+.mx-1{
+    margin: 0 0.5rem 0.5rem 0;
+}
+.main-right{
+    flex: 0.4;
+}
+.el-form-item--default{
+    margin-bottom: 0;
+}
+.checkbox{
+    border:1px solid #dfe1e6;
+    width: 14px;
+    height: 14px;
+    border-radius: 2px;
+    background-color: #fff;
+    cursor: pointer;
+    position:relative
+}
+.current-row .checkbox{
+    background-color: var(--el-color-primary);
+    border-color: var(--el-color-primary);
+}
+.current-row .checkbox:after{
+    transform: rotate(45deg) scaleY(1);
+    box-sizing: content-box;
+    content: "";
+    border: 1px solid #fff;
+    border-left: 0;
+    border-top: 0;
+    height: 7px;
+    left: 4px;
+    position: absolute;
+    top: 1px;
+    width: 3px;
+    transition: transform .15s ease-in 50ms;
+    transform-origin: center;
+}
+</style>

+ 81 - 0
src/views/manage/user/store/address/list.vue

@@ -0,0 +1,81 @@
+<template>
+    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="800" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
+        <el-container class="flex-column" v-loading="loading">
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{ titleMap[mode] }} <span class="tips">{{ formData.truename }}</span></div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="table-search">
+                <fieldset>
+                    <legend>
+                        <el-tag type="info">按需操作</el-tag>
+                    </legend>
+                    <div class="op-header">
+                        <div class="left-panel">
+                            <el-button type="success" icon="el-icon-plus" @click="add_address()">关联新地址</el-button>
+                            <!-- <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button> -->
+                        </div>
+                    </div>
+                </fieldset>
+            </div>
+            <el-main class="nopadding">
+                <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+                    <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                </scTable>
+            </el-main>
+            <el-footer>
+                <el-button @click="visible=false">关 闭</el-button>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            visible: false,
+            titleMap:{
+                add:"关联洗衣地址",
+                edit:"关联洗衣地址"
+            },
+            list: {
+                apiObj: this.$API.storeAddress.list
+            },
+            searchKey:{}
+        }
+    },
+    methods:{
+        handleSuccess(data){
+            console.log(data)
+        },
+        add_address(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open()
+            })
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+            this.searchKey.store = data.store_id;
+        },
+    }
+}
+</script>

+ 168 - 0
src/views/manage/user/store/components/edit.vue

@@ -0,0 +1,168 @@
+<template>
+    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="800" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
+        <el-container class="flex-column" v-loading="loading">  
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{ titleMap[mode] }} <span class="tips">{{ formData.truename }}</span></div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <el-main>
+                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+                    <el-row :gutter="10">
+                        <el-col :span="24">
+                            <el-form-item label="门店名称" prop="truename">
+                                <el-input v-model="formData.truename" clearable placeholder="请输入门店名称"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="店长名称" prop="store_mch">
+                                <el-input v-model="formData.store_mch" clearable placeholder="请输入店长名称"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="门店类型" prop="store_type">
+                                <el-select v-model="formData.store_type" placeholder="请选择门店类型">
+                                    <el-option label="洗护实体店" :value="1"></el-option>
+                                    <el-option label="洗护代收店" :value="2"></el-option>
+                                    <el-option label="洗护美团店" :value="3"></el-option>
+                                    <el-option label="洗护抖音店" :value="4"></el-option>
+                                    <el-option label="商城自提店" :value="5"></el-option>
+                                    <el-option label="洗护口碑店" :value="6"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="洗衣能力" prop="wash_type">
+                                <el-radio-group v-model="formData.wash_type">
+                                    <el-radio border :label="1">门店自洗</el-radio>
+                                    <el-radio border :label="2">洗衣地址</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="门店地址" prop="store_address">
+                                <el-input v-model="formData.store_address" clearable placeholder="请输入门店地址"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="营业执照" prop="license">
+                                <sc-upload accept="image/gif,image/jpeg,image/jpg,image/png" v-model="formData.license" title="大小不超过10M"></sc-upload>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="门店状态" prop="store_status">
+                                <el-radio-group v-model="formData.store_status">
+                                    <el-radio :label="1">已启用</el-radio>
+                                    <el-radio :label="2">已失效</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="独立财务" prop="store_order">
+                                <el-radio-group v-model="formData.store_order">
+                                    <el-radio :label="1">关闭</el-radio>
+                                    <el-radio :label="2">开启</el-radio>
+                                </el-radio-group>
+                                <div class="el-form-item-msg">温馨提示:开启独立财务后,该门店将实施单独扣费,费用不足时无法发送短信等功能</div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="短信收费" prop="store_sms" v-if="formData.store_order==2">
+                                <el-input v-model="formData.store_sms" clearable placeholder="请输入短信费用">
+                                    <template #append>元/条</template>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="快递加价" prop="store_express" v-if="formData.store_order==2">
+                                <el-input v-model="formData.store_express" clearable placeholder="请输入快递溢价">
+                                    <template #append>元/次</template>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="网单收费加价(短信、快递加价失效)" prop="store_inter_order" v-if="formData.store_order==2">
+                                <el-input v-model="formData.store_inter_order" clearable placeholder="请输入网单收费">
+                                    <template #append>元/单</template>
+                                </el-input>
+                                <div class="el-form-item-msg"></div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </el-main>
+            <el-footer style="text-align: right;">
+			    <el-button @click="visible=false" >取 消</el-button>
+                <el-button type="primary" :loading="isSaveing" @click="submit(stepActive)">保存</el-button>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+</template>
+<script>
+export default {
+    
+    data(){
+        return {
+            isSaveing:false,
+            loading: false,
+            mode:"add",
+            visible: false,
+            titleMap:{
+                add:"新增门店",
+                edit:"编辑门店"
+            },
+            stepActive:1,
+            formData:{},
+            disabled:false,
+            rules:{
+                store_order: [
+                    {required: true, message: '请选择'}
+                ],
+                store_status: [
+                    {required: true, message: '请选择'}
+                ],
+                wash_type: [
+                    {required: true, message: '请选择'}
+                ],
+                truename: [
+                    {required: true, message: '请输入门店名称'}
+                ],
+                store_mch: [
+                    {required: true, message: '请输入店长名称'}
+                ],
+                store_type: [
+                    {required: true, message: '请选择门店类型'}
+                ],
+                store_address: [
+                    {required: true, message: '请输入门店地址'}
+                ],
+                license: [
+                    {required: true, message: "请上传营业执照"}
+                ],
+            },
+        }
+    },
+    methods: {
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+            console.log(data)
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            
+        }
+    }
+}
+</script>

+ 1 - 0
src/views/manage/user/store/components/form.vue

@@ -159,6 +159,7 @@ export default {
     },
     data(){
         return {
+            isSaveing:false,
             loading: false,
             mode:"add",
             visible: false,

+ 23 - 5
src/views/manage/user/store/components/table.vue

@@ -6,7 +6,7 @@
         <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
         <el-table-column label="登录账号" prop="truename" width="150">
             <template #default="scope">
-                <span v-if="scope.row.user">{{ scope.row.user.username }}</span>
+                <span v-if="scope.row.user">{{ scope.row.user.username?scope.row.user.username:'-' }}</span>
                 <span class="status-danger" v-else>未设置</span>
             </template>
         </el-table-column>
@@ -32,6 +32,12 @@
                 <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 关闭</div>
             </template>
         </el-table-column>
+        <el-table-column label="洗衣能力" prop="login_at" width="120">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.wash_type==1">门店自洗</div>
+                <div class="status-danger" v-else>第三方洗衣</div>
+            </template>
+        </el-table-column>
         <el-table-column label="独立财务" prop="login_at" width="100" align="center">
             <template #default="scope">
                 <div class="status-success" v-if="scope.row.store_order==2"><sc-status-indicator type="success"></sc-status-indicator> 开启</div>
@@ -40,10 +46,15 @@
         </el-table-column>
         <el-table-column label="到期时间" prop="vip_at" width="220"></el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="200" align="right" fixed="right">
+        <el-table-column label="操作" width="220" align="right" fixed="right">
             <template #default="scope">
                 <el-button-group>
-                    <el-button text size="small" @click="table_user(scope.row)">用户管理</el-button>
+                    <el-button text type="info" size="small" @click="table_address(scope.row)">
+                        <el-tooltip placement="top-start" content="关联洗衣地址">
+                            地址
+                        </el-tooltip>
+                    </el-button>
+                    <el-button text size="small" @click="table_user(scope.row)">用户</el-button>
                     <el-button text type="warning" size="small" @click="table_passwd(scope.row)">编辑</el-button>
                     <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
                         <template #reference>
@@ -56,14 +67,16 @@
     </scTable>
     <formMain ref="formMain" @success="handleSuccess"></formMain>
     <userMain ref="userMain" @success="handleSuccess"></userMain>
+    <addressMain ref="addressMain" @success="handleSuccess"></addressMain>
 </template>
 
 <script>
-import formMain from './form';
+import formMain from './edit';
 import userMain from './user';
+import addressMain from '../address/list';
 export default {
     components: {
-        formMain,userMain
+        formMain,userMain,addressMain
     },
     props: {
         type: { type: String, default: "1" }
@@ -92,6 +105,11 @@ export default {
                 this.$refs.userMain.open("edit").setData(row)
             })
         },
+        table_address(row){
+            this.$nextTick(() => {
+                this.$refs.addressMain.open("edit").setData(row)
+            })
+        },
         refresh(){
             this.$refs.table.refresh()
         },

+ 6 - 2
src/views/store/member/list/components/table.vue

@@ -14,8 +14,12 @@
                 {{scope.row.format_total?scope.row.format_total:'0.00'}}
             </template>
         </el-table-column>
-        <el-table-column label="会员性别" width="150" prop="format_sex"></el-table-column>
-        <el-table-column label="会员生日" width="150" prop="brithday"></el-table-column>
+        <el-table-column label="性别" width="150" prop="format_sex" align="center"></el-table-column>
+        <el-table-column label="会员生日" width="150" prop="brithday">
+            <template #default="scope">
+                {{scope.row.brithday?scope.row.brithday:'-'}}
+            </template>
+        </el-table-column>
         <el-table-column label="最后充值时间" prop="login_at" width="180">
             <template #default="scope">
                 {{scope.row.last_at?scope.row.last_at:'-'}}