xuhaifeng 11 месяцев назад
Родитель
Сommit
386dc10ac6

+ 689 - 682
src/views/app/user/index.vue

@@ -1,714 +1,721 @@
 <template>
-  <div class="app-container">
-    <el-form :model="queryParams" :label-position="left" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item  prop="phoneNumber">
-        <el-input v-model="queryParams.phoneNumber" placeholder="请输入手机号" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>
-      <el-form-item prop="nickName">
-        <el-input v-model="queryParams.nickName" placeholder="请输入昵称" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>
-      <el-form-item  prop="realName">
-        <el-input v-model="queryParams.realName" placeholder="请输入真实姓名" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>    
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh"  @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
+    <div class="app-container">
+        <el-form :model="queryParams" :label-position="left" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form-item prop="phoneNumber">
+                <el-input v-model="queryParams.phoneNumber" placeholder="请输入手机号" clearable @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item prop="nickName">
+                <el-input v-model="queryParams.nickName" placeholder="请输入昵称" clearable @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item prop="realName">
+                <el-input v-model="queryParams.realName" placeholder="请输入真实姓名" clearable @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item>
+                <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+                <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+            </el-form-item>
+        </el-form>
 
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus"   @click="handleAdd" v-hasPermi="['app:user:add']"
-          v-if="userInfoVO.userType == '02'">新增</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
+        <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+                <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['app:user:add']" v-if="userInfoVO.userType == '02'">新增</el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
 
-    <Page  uri="/mapi/app/user/list" :request-params="queryParams" ref="pagination" >
-      <!--      <el-table-column type="selection" width="55" align="center" fixed="left"/>-->
-      <!--      <el-table-column label="客户ID" align="center" prop="id" />-->
-      <el-table-column label="昵称" align="center" prop="nickName" />
-      <el-table-column label="真实姓名" align="center" prop="realName" />
-      <el-table-column label="手机号" align="center" prop="phoneNumber" />
-      <el-table-column label="头像" align="center" prop="avatarUrl">
-        <template slot-scope="scope">
-          <el-avatar shape="square" size="large" :src="scope.row.avatarUrl"></el-avatar>
-        </template>
-      </el-table-column>
-      <el-table-column label="性别" align="center" prop="sex">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
-        </template>
-      </el-table-column>
-      <el-table-column label="生日" align="center" prop="birthday" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="客户等级" align="center" prop="level" />
-      <!--      <el-table-column label="微信唯一标识" align="center" prop="unionId" />-->
-      <!--      <el-table-column label="支付密码" align="center" prop="payPassword" />-->
-      <!--      <el-table-column label="是否使用支付密码" align="center" prop="isUsePayPassword" />-->
-      <!--      <el-table-column label="状态" align="center" prop="status">-->
-      <!--        <template slot-scope="scope">-->
-      <!--          <el-switch v-model="scope.row.status" active-value="0" inactive-value="1"-->
-      <!--                     @change="handleStatusChange(scope.row)"></el-switch>-->
-      <!--        </template>-->
-      <!--      </el-table-column>-->
-
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150"
-        v-if="userInfoVO.userType == '02' || userInfoVO.userType == '00'">
-        <template slot-scope="scope">
-          <el-button  type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['app:user:edit']"
-            v-if="userInfoVO.userType == '02'">修改</el-button>
-          <!--          <el-button-->
-          <!--             -->
-          <!--            type="text"-->
-          <!--            icon="el-icon-delete"-->
-          <!--            @click="handleDelete(scope.row)"-->
-          <!--            v-hasPermi="['app:user:remove']"-->
-          <!--          >删除</el-button>-->
-          <el-button  type="text" icon="el-icon-view" @click="handleView(scope.row)">客户信息</el-button>
-        </template>
-      </el-table-column>
-    </Page>
-    <!-- 添加或修改用户对话框 -->
-    <el-dialog :title="title" :visible.sync="open" size="50%" append-to-body  destroy-on-close>
-      <EditUser ref="editUser" :dataSource="form" :isDisabled="isDisabled" @onSubmit="submitForm" @closeDialog="closeDialog" />
-      <!--      <el-row :gutter="15" >-->
-      <!--        <el-form ref="form" :model="form" :rules="rules" label-width="100px">-->
-      <!--          <el-col :span="24">-->
-      <!--            <el-form-item label="昵称" prop="nickName">-->
-      <!--              <el-input v-model="form.nickName" placeholder="请输入昵称" maxlength="50" show-word-limit clearable :disabled="isDisabled"/>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="真实姓名" prop="realName">-->
-      <!--              <el-input v-model="form.realName" placeholder="请输入真实姓名" maxlength="5" show-word-limit clearable :disabled="isDisabled"/>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="手机号" prop="phoneNumber">-->
-      <!--              <el-input v-model="form.phoneNumber" placeholder="请输入手机号" maxlength="11" show-word-limit clearable :disabled="isDisabled"/>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="性别" prop="sex">-->
-      <!--              <el-select v-model="form.sex" placeholder="请选择性别" clearable :disabled="isDisabled">-->
-      <!--                <el-option-->
-      <!--                  v-for="dict in dict.type.sys_user_sex"-->
-      <!--                  :key="dict.value"-->
-      <!--                  :label="dict.label"-->
-      <!--                  :value="dict.value"-->
-      <!--                ></el-option>-->
-      <!--              </el-select>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="生日" prop="birthday" clearable >-->
-      <!--              <el-date-picker clearable-->
-      <!--                              v-model="form.birthday"-->
-      <!--                              type="date"-->
-      <!--                              value-format="yyyy-MM-dd"-->
-      <!--                              placeholder="请选择生日"-->
-      <!--                              :disabled="isDisabled">-->
-      <!--              </el-date-picker>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="头像地址" prop="avatarUrl" >-->
-      <!--              <image-upload v-model="form.avatarUrl" :limit="1" :disabled="isDisabled"/>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="客户等级" prop="level">-->
-      <!--              <el-input-number v-model="form.level"  :min="1" :max="50" label="请输入客户等级" :disabled="isDisabled"></el-input-number>-->
-      <!--            </el-form-item>-->
-      <!--            <el-form-item label="备注" prop="remark">-->
-      <!--              <el-input v-model="form.remark" placeholder="请输入备注" maxlength="50" show-word-limit />-->
-      <!--            </el-form-item>-->
-      <!--          </el-col>-->
-      <!--        </el-form>-->
-      <!--      </el-row>-->
-
-      <!--      <div slot="footer" class="dialog-footer">-->
-      <!--        <el-button type="primary" @click="submitForm" style="margin-left: 5%">提交</el-button>-->
-      <!--        <el-button @click="cancel">取 消</el-button>-->
-      <!--      </div>-->
-    </el-dialog>
-
-    <!-- 客户详情 -->
-    <el-dialog title="客户详情" :visible.sync="userViewType" size="70%" append-to-body :before-close="usercheckClose" class="user_drawer">
-      <div class="userContent">
-        <el-card class="box-card">
-          <div class="title">客户基本信息</div>
-          <div class="userinfo">
-            <div class="user_image">
-              <image-preview :src="userInfo.avatarUrl" :width="150" :height="150" />
-            </div>
-            <div class="list_user">
-              <div class="item_user">
-                <div class="name">真实姓名</div>
-                <div class="text">{{ userInfo.realName }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">昵称</div>
-                <div class="text">{{ userInfo.nickName }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">性别</div>
-                <div class="text">
-                  <dict-tag :options="dict.type.sys_user_sex" :value="userInfo.sex" />
-                </div>
-              </div>
-              <div class="item_user">
-                <div class="name">手机号</div>
-                <div class="text">{{ userInfo.phoneNumber }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">生日</div>
-                <div class="text">{{ parseTime(userInfo.birthday, '{y}-{m}-{d}') }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">客户等级</div>
-                <div class="text">{{ userInfo.level }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">充值余额</div>
-                <div class="text">{{ userInfo.rechargeBalance }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">积分余额</div>
-                <div class="text">{{ userInfo.pointBalance }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">赠送余额</div>
-                <div class="text">{{ userInfo.giveBalance }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">福利金余额</div>
-                <div class="text">{{ userInfo.welfareBalance }}</div>
-              </div>
-              <div class="item_user">
-                <div class="name">地址</div>
-                <div class="text">{{ getAddress(userInfo)?getAddress(userInfo):'暂无地址' }}</div>
-              </div>
-            </div>
-          </div>
-        </el-card>
-
-        <el-tabs type="border-card" v-model="activeValue" @tab-click="btn_chioc">
-          <el-tab-pane name="1">
-            <span slot="label"><i class="el-icon-s-ticket"></i> 优惠券</span>
-            <el-table v-loading="userloading" :data="userinfoData">
-              <el-table-column label="编号" align="center" prop="id" fixed="left" />
-              <el-table-column label="优惠券名称" align="center" prop="couponTypeTitle" width="120" :show-overflow-tooltip="true" />
-              <el-table-column label="优惠券类型" align="center" prop="discountWay" width="120" :show-overflow-tooltip="true">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.coupon_type" :value="scope.row.discountWay" />
-                </template>
-              </el-table-column>
-
-              <el-table-column label="活动名称" align="center" prop="activityTitle" width="120" :show-overflow-tooltip="true" />
-              <el-table-column label="发放门店/工厂" align="center" prop="orgName" width="120" :show-overflow-tooltip="true" />
-
-              <el-table-column label="是否核销" align="center" prop="isUsed" width="80">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
-                </template>
-              </el-table-column>
-
-              <el-table-column label="核销门店/工厂" align="center" prop="usedOrgName" width="120" :show-overflow-tooltip="true" />
-
-              <el-table-column label="核销时间" align="center" prop="usedTime" width="180">
-              </el-table-column>
-              <el-table-column label="有效期开始时间" align="center" prop="startDate" width="180">
-              </el-table-column>
-              <el-table-column label="有效期结束时间" align="center" prop="endDate" width="180">
-              </el-table-column>
-              <el-table-column label="是否单件抵扣券" align="center" prop="isUnique" width="180">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
-                </template>
-              </el-table-column>
-              <el-table-column label="是否手动发券" align="center" prop="canManual" width="180">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
-                </template>
-              </el-table-column>
-              <el-table-column label="抵用金额(元)" align="center" prop="deductAmount" width="120" />
-              <el-table-column label="核销订单编码" align="center" prop="deductOrderNo" width="150" />
-            </el-table>
-            <pagination v-show="usertotal>0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize"
-              @pagination="getMemberCouponData" />
-          </el-tab-pane>
-          <el-tab-pane name="2">
-            <span slot="label"><i class="el-icon-coin"></i> 消费明细</span>
-            <el-table v-loading="userloading" :data="userinfoData">
-              <el-table-column label="订单编号" align="center" prop="orderNo" min-width="200" fixed="left" />
-              <el-table-column label="订单类型" align="center" prop="orderType" width="150">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.order_type" :value="scope.row.orderType" />
-                </template>
-              </el-table-column>
-              <el-table-column label="账单标题" align="center" prop="title" width="100" />
-              <el-table-column label="支付方式" align="center" prop="payType" width="100">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.recharge_pay_type" :value="scope.row.payType" />
-                </template>
-              </el-table-column>
-              <el-table-column label="支付总金额" align="center" prop="payTotalAmount" width="100" />
-              <el-table-column label="现金支付金额" align="center" prop="cashPayAmount" width="100" />
-              <el-table-column label="充值余额支付金额" align="center" prop="rechargePayAmount" width="150" />
-              <el-table-column label="赠送余额支付金额" align="center" prop="givePayAmount" width="150" />
-              <el-table-column label="福利金余额支付金额" align="center" prop="welfarePayAmount" width="150" />
-              <el-table-column label="消费积分" align="center" prop="usePoint" width="80" />
-              <el-table-column label="获取积分" align="center" prop="receivePoint" width="80" />
-              <el-table-column label="是否退款" align="center" prop="isRefund" width="80" />
-            </el-table>
-            <pagination v-show="usertotal>0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize"
-              @pagination="getMemberBillMstrData" />
-          </el-tab-pane>
-          <el-tab-pane name="3">
-            <span slot="label"><i class="el-icon-shopping-cart-1"></i> 商品订单</span>
-            <el-table v-loading="userloading" :data="userinfoData">
-              <el-table-column label="订单编号" align="center" prop="orderNo" width="250px" fixed="left" />
-              <el-table-column label="订单总价(元)" align="center" prop="totalPrice" width="200px" />
-              <el-table-column label="抵扣金额(元)" align="center" prop="deductAmount" width="200px">
-                <template slot-scope="scope">
-                  {{scope.row.deductAmount?scope.row.deductAmount:'0'}}
-                </template>
-              </el-table-column>
-              <el-table-column label="支付金额(元)" align="center" prop="payAmount" width="200px" />
-              <el-table-column label="订单状态" align="center" prop="orderStatus" width="200px">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.order_goods_status" :value="scope.row.orderStatus" />
-                </template>
-              </el-table-column>
-              <el-table-column label="支付方式" align="center" prop="payType">
+        <Page uri="/mapi/app/user/list" :request-params="queryParams" ref="pagination">
+            <!--      <el-table-column type="selection" width="55" align="center" fixed="left"/>-->
+            <!--      <el-table-column label="客户ID" align="center" prop="id" />-->
+            <el-table-column label="昵称" align="center" prop="nickName" />
+            <el-table-column label="真实姓名" align="center" prop="realName" />
+            <el-table-column label="手机号" align="center" prop="phoneNumber" />
+            <el-table-column label="头像" align="center" prop="avatarUrl">
                 <template slot-scope="scope">
-                  <dict-tag :options="dict.type.recharge_pay_type" :value="scope.row.payType" />
+                    <el-avatar shape="square" size="large" :src="scope.row.avatarUrl"></el-avatar>
                 </template>
-              </el-table-column>
-              <el-table-column label="下单时间" align="center" prop="createTime" width="200px" />
-              <el-table-column label="支付时间" align="center" prop="payTime" width="200px" />
-            </el-table>
-            <pagination v-show="usertotal>0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize"
-              @pagination="getMemberOrderGoodsData" />
-          </el-tab-pane>
-          <el-tab-pane name="4">
-            <span slot="label"><i class="el-icon-orange"></i> 洗衣订单</span>
-            <el-table v-loading="userloading" :data="userinfoData">
-              <el-table-column label="订单编号" align="center" prop="orderNo" min-width="200" fixed="left" />
-              <el-table-column label="门店/工厂名称" align="center" prop="sysOrg.name" width="150" />
-              <el-table-column label="数量" align="center" prop="orderClothCount" width="100" />
-              <el-table-column label="合计" align="center" prop="clothItemName" width="200">
+            </el-table-column>
+            <el-table-column label="性别" align="center" prop="sex">
                 <template slot-scope="scope">
-                  <span>合计:{{scope.row.payAmount}}元</span>
-                  <br />
-                  <span v-if="scope.row.payType == '0'">支付方式:微信</span>
-                  <span v-if="scope.row.payType == '1'">支付方式:支付宝</span>
-                  <span v-if="scope.row.payType == '2'">支付方式:现金</span>
-                  <span v-if="scope.row.payType == '3'">支付方式:余额</span>
+                    <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
                 </template>
-              </el-table-column>
-              <el-table-column label="订单来源" align="center" width="200">
+            </el-table-column>
+            <el-table-column label="生日" align="center" prop="birthday" width="180">
                 <template slot-scope="scope">
-                  <span v-if="scope.row.orderSource == 'OFFLINE'">线下</span>
-                  <span v-else>线上</span>
+                    <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
                 </template>
-              </el-table-column>
-              <el-table-column label="订单时间" align="center" prop="createTime" min-width="200" />
-              <el-table-column label="状态" align="center" width="150">
-                <template slot-scope="scope">
-                  <dict-tag :options="dict.type.cloth_order_status" :value="scope.row.orderStatus" />
-                </template>
-              </el-table-column>
-            </el-table>
-            <pagination v-show="usertotal>0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize"
-              @pagination="getMemberOrderClothData" />
-          </el-tab-pane>
-          <el-tab-pane name="5">
-            <span slot="label"><i class="el-icon-bank-card"></i> 会员卡</span>
-            <el-table v-loading="userloading" :data="userinfoData">
-              <el-table-column label="卡号" align="center" prop="cardNo" width="250px" fixed="left" />
-              <el-table-column label="充值订单编号" align="center" prop="orderNo" width="250px" />
-              <el-table-column label="充值金额(元)" align="center" prop="rechargeAmount" width="200px" />
-              <el-table-column label="赠送金额(元)" align="center" prop="giveAmount" width="200px" />
-              <el-table-column label="充值余额(元)" align="center" prop="rechargeBalance" width="200px" />
-              <el-table-column label="赠送余额(元)" align="center" prop="giveBalance" width="200px" />
-              <el-table-column label="积分金额" align="center" prop="pointBalance" width="200px" />
-              <el-table-column label="赠送积分" align="center" prop="givePointAmount" width="200px" />
-              <el-table-column label="福利金额(元)" align="center" prop="welfareAmount" width="200px" />
-              <el-table-column label="福利金余额(元)" align="center" prop="welfareBalance" width="200px" />
-              <el-table-column label="使用状态" align="center" prop="rechargeStatus" width="250px">
-                <template slot-scope="scope">
-                  <el-tag v-if="scope.row.rechargeStatus==1">已使用</el-tag>
-                  <el-tag type="info" v-else>未使用</el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column label="删除状态" align="center" prop="rechargeStatus" width="250px">
+            </el-table-column>
+            <el-table-column label="客户等级" align="center" prop="level" />
+            <!--      <el-table-column label="微信唯一标识" align="center" prop="unionId" />-->
+            <!--      <el-table-column label="支付密码" align="center" prop="payPassword" />-->
+            <!--      <el-table-column label="是否使用支付密码" align="center" prop="isUsePayPassword" />-->
+            <!--      <el-table-column label="状态" align="center" prop="status">-->
+            <!--        <template slot-scope="scope">-->
+            <!--          <el-switch v-model="scope.row.status" active-value="0" inactive-value="1"-->
+            <!--                     @change="handleStatusChange(scope.row)"></el-switch>-->
+            <!--        </template>-->
+            <!--      </el-table-column>-->
+
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150" v-if="userInfoVO.userType == '02' || userInfoVO.userType == '00'">
                 <template slot-scope="scope">
-                  <el-tag v-if="scope.row.delFlag==0">正常</el-tag>
-                  <el-tag type="danger" v-else>删除</el-tag>
+                    <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['app:user:edit']" v-if="userInfoVO.userType == '02'">修改</el-button>
+                    <!--          <el-button-->
+                    <!--             -->
+                    <!--            type="text"-->
+                    <!--            icon="el-icon-delete"-->
+                    <!--            @click="handleDelete(scope.row)"-->
+                    <!--            v-hasPermi="['app:user:remove']"-->
+                    <!--          >删除</el-button>-->
+                    <el-button type="text" icon="el-icon-view" @click="handleView(scope.row)">客户信息</el-button>
                 </template>
-              </el-table-column>
-              <el-table-column label="充值门店" align="center" prop="rechargeStoreName" width="200px" />
-              <el-table-column label="充值时间" align="center" prop="rechargeTime" width="200px" />
-            </el-table>
-            <pagination v-show="usertotal>0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize"
-              @pagination="getMemberCardData" />
-          </el-tab-pane>
-        </el-tabs>
-      </div>
+            </el-table-column>
+        </Page>
+        <!-- 添加或修改用户对话框 -->
+        <el-dialog :title="title" :visible.sync="open" size="80%" append-to-body destroy-on-close>
+            <EditUser ref="editUser" :dataSource="form" :isDisabled="isDisabled" @onSubmit="submitForm" />
+            <!--      <el-row :gutter="15" >-->
+            <!--        <el-form ref="form" :model="form" :rules="rules" label-width="100px">-->
+            <!--          <el-col :span="24">-->
+            <!--            <el-form-item label="昵称" prop="nickName">-->
+            <!--              <el-input v-model="form.nickName" placeholder="请输入昵称" maxlength="50" show-word-limit clearable :disabled="isDisabled"/>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="真实姓名" prop="realName">-->
+            <!--              <el-input v-model="form.realName" placeholder="请输入真实姓名" maxlength="5" show-word-limit clearable :disabled="isDisabled"/>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="手机号" prop="phoneNumber">-->
+            <!--              <el-input v-model="form.phoneNumber" placeholder="请输入手机号" maxlength="11" show-word-limit clearable :disabled="isDisabled"/>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="性别" prop="sex">-->
+            <!--              <el-select v-model="form.sex" placeholder="请选择性别" clearable :disabled="isDisabled">-->
+            <!--                <el-option-->
+            <!--                  v-for="dict in dict.type.sys_user_sex"-->
+            <!--                  :key="dict.value"-->
+            <!--                  :label="dict.label"-->
+            <!--                  :value="dict.value"-->
+            <!--                ></el-option>-->
+            <!--              </el-select>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="生日" prop="birthday" clearable >-->
+            <!--              <el-date-picker clearable-->
+            <!--                              v-model="form.birthday"-->
+            <!--                              type="date"-->
+            <!--                              value-format="yyyy-MM-dd"-->
+            <!--                              placeholder="请选择生日"-->
+            <!--                              :disabled="isDisabled">-->
+            <!--              </el-date-picker>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="头像地址" prop="avatarUrl" >-->
+            <!--              <image-upload v-model="form.avatarUrl" :limit="1" :disabled="isDisabled"/>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="客户等级" prop="level">-->
+            <!--              <el-input-number v-model="form.level"  :min="1" :max="50" label="请输入客户等级" :disabled="isDisabled"></el-input-number>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item label="备注" prop="remark">-->
+            <!--              <el-input v-model="form.remark" placeholder="请输入备注" maxlength="50" show-word-limit />-->
+            <!--            </el-form-item>-->
+            <!--          </el-col>-->
+            <!--        </el-form>-->
+            <!--      </el-row>-->
+
+            <!--      <div slot="footer" class="dialog-footer">-->
+            <!--        <el-button type="primary" @click="submitForm" style="margin-left: 5%">提交</el-button>-->
+            <!--        <el-button @click="cancel">取 消</el-button>-->
+            <!--      </div>-->
+        </el-dialog>
+
+        <!-- 客户详情 -->
+        <el-dialog title="客户详情" :visible.sync="userViewType" width="70%" append-to-body class="user_drawer">
+            <div class="userContent">
+                <el-card class="box-card">
+                    <div class="title">客户基本信息</div>
+                    <div class="userinfo">
+                        <div class="user_image">
+                            <image-preview :src="userInfo.avatarUrl" :width="150" :height="150" />
+                        </div>
+                        <div class="list_user">
+                            <div class="item_user">
+                                <div class="name">真实姓名</div>
+                                <div class="text">{{ userInfo.realName }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">昵称</div>
+                                <div class="text">{{ userInfo.nickName }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">性别</div>
+                                <div class="text">
+                                    <dict-tag :options="dict.type.sys_user_sex" :value="userInfo.sex" />
+                                </div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">手机号</div>
+                                <div class="text">{{ userInfo.phoneNumber }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">生日</div>
+                                <div class="text">{{ parseTime(userInfo.birthday, '{y}-{m}-{d}') }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">客户等级</div>
+                                <div class="text">{{ userInfo.level }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">充值余额</div>
+                                <div class="text">{{ userInfo.rechargeBalance }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">积分余额</div>
+                                <div class="text">{{ userInfo.pointBalance }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">赠送余额</div>
+                                <div class="text">{{ userInfo.giveBalance }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">福利金余额</div>
+                                <div class="text">{{ userInfo.welfareBalance }}</div>
+                            </div>
+                            <div class="item_user">
+                                <div class="name">地址</div>
+                                <div class="text">{{ getAddress(userInfo) ? getAddress(userInfo) : '暂无地址' }}</div>
+                            </div>
+                        </div>
+                    </div>
+                </el-card>
+
+                <el-tabs type="border-card" v-model="activeValue" @tab-click="btn_chioc">
+                    <el-tab-pane name="1">
+                        <span slot="label"><i class="el-icon-s-ticket"></i> 优惠券</span>
+                        <el-table v-loading="userloading" :data="userinfoData">
+                            <el-table-column label="编号" align="center" prop="id" fixed="left" />
+                            <el-table-column label="优惠券名称" align="center" prop="couponTypeTitle" width="120" :show-overflow-tooltip="true" />
+                            <el-table-column label="优惠券类型" align="center" prop="discountWay" width="120" :show-overflow-tooltip="true">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.coupon_type" :value="scope.row.discountWay" />
+                                </template>
+                            </el-table-column>
 
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="usercancel" style="margin-left: 5%">关 闭</el-button>
-      </div>
-    </el-dialog>
-  </div>
+                            <el-table-column label="活动名称" align="center" prop="activityTitle" width="120" :show-overflow-tooltip="true" />
+                            <el-table-column label="发放门店/工厂" align="center" prop="orgName" width="120" :show-overflow-tooltip="true" />
+
+                            <el-table-column label="是否核销" align="center" prop="isUsed" width="80">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column label="核销门店/工厂" align="center" prop="usedOrgName" width="120" :show-overflow-tooltip="true" />
+
+                            <el-table-column label="核销时间" align="center" prop="usedTime" width="180"> </el-table-column>
+                            <el-table-column label="有效期开始时间" align="center" prop="startDate" width="180"> </el-table-column>
+                            <el-table-column label="有效期结束时间" align="center" prop="endDate" width="180"> </el-table-column>
+                            <el-table-column label="是否单件抵扣券" align="center" prop="isUnique" width="180">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="是否手动发券" align="center" prop="canManual" width="180">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUnique" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="抵用金额(元)" align="center" prop="deductAmount" width="120" />
+                            <el-table-column label="核销订单编码" align="center" prop="deductOrderNo" width="150" />
+                        </el-table>
+                        <pagination v-show="usertotal > 0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize" @pagination="getMemberCouponData" />
+                    </el-tab-pane>
+                    <el-tab-pane name="2">
+                        <span slot="label"><i class="el-icon-coin"></i> 消费明细</span>
+                        <el-table v-loading="userloading" :data="userinfoData">
+                            <el-table-column label="订单编号" align="center" prop="orderNo" min-width="200" fixed="left" />
+                            <el-table-column label="订单类型" align="center" prop="orderType" width="150">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.order_type" :value="scope.row.orderType" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="账单标题" align="center" prop="title" width="100" />
+                            <el-table-column label="支付方式" align="center" prop="payType" width="100">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.recharge_pay_type" :value="scope.row.payType" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="支付总金额" align="center" prop="payTotalAmount" width="100" />
+                            <el-table-column label="现金支付金额" align="center" prop="cashPayAmount" width="100" />
+                            <el-table-column label="充值余额支付金额" align="center" prop="rechargePayAmount" width="150" />
+                            <el-table-column label="赠送余额支付金额" align="center" prop="givePayAmount" width="150" />
+                            <el-table-column label="福利金余额支付金额" align="center" prop="welfarePayAmount" width="150" />
+                            <el-table-column label="消费积分" align="center" prop="usePoint" width="80" />
+                            <el-table-column label="获取积分" align="center" prop="receivePoint" width="80" />
+                            <el-table-column label="是否退款" align="center" prop="isRefund" width="80" />
+                        </el-table>
+                        <pagination v-show="usertotal > 0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize" @pagination="getMemberBillMstrData" />
+                    </el-tab-pane>
+                    <el-tab-pane name="3">
+                        <span slot="label"><i class="el-icon-shopping-cart-1"></i> 商品订单</span>
+                        <el-table v-loading="userloading" :data="userinfoData">
+                            <el-table-column label="订单编号" align="center" prop="orderNo" width="250px" fixed="left" />
+                            <el-table-column label="订单总价(元)" align="center" prop="totalPrice" width="200px" />
+                            <el-table-column label="抵扣金额(元)" align="center" prop="deductAmount" width="200px">
+                                <template slot-scope="scope">
+                                    {{ scope.row.deductAmount ? scope.row.deductAmount : '0' }}
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="支付金额(元)" align="center" prop="payAmount" width="200px" />
+                            <el-table-column label="订单状态" align="center" prop="orderStatus" width="200px">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.order_goods_status" :value="scope.row.orderStatus" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="支付方式" align="center" prop="payType">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.recharge_pay_type" :value="scope.row.payType" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="下单时间" align="center" prop="createTime" width="200px" />
+                            <el-table-column label="支付时间" align="center" prop="payTime" width="200px" />
+                        </el-table>
+                        <pagination v-show="usertotal > 0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize" @pagination="getMemberOrderGoodsData" />
+                    </el-tab-pane>
+                    <el-tab-pane name="4">
+                        <span slot="label"><i class="el-icon-orange"></i> 洗衣订单</span>
+                        <el-table v-loading="userloading" :data="userinfoData">
+                            <el-table-column label="订单编号" align="center" prop="orderNo" min-width="200" fixed="left" />
+                            <el-table-column label="门店/工厂名称" align="center" prop="sysOrg.name" width="150" />
+                            <el-table-column label="数量" align="center" prop="orderClothCount" width="100" />
+                            <el-table-column label="合计" align="center" prop="clothItemName" width="200">
+                                <template slot-scope="scope">
+                                    <span>合计:{{ scope.row.payAmount }}元</span>
+                                    <br />
+                                    <span v-if="scope.row.payType == '0'">支付方式:微信</span>
+                                    <span v-if="scope.row.payType == '1'">支付方式:支付宝</span>
+                                    <span v-if="scope.row.payType == '2'">支付方式:现金</span>
+                                    <span v-if="scope.row.payType == '3'">支付方式:余额</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="订单来源" align="center" width="200">
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.orderSource == 'OFFLINE'">线下</span>
+                                    <span v-else>线上</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="订单时间" align="center" prop="createTime" min-width="200" />
+                            <el-table-column label="状态" align="center" width="150">
+                                <template slot-scope="scope">
+                                    <dict-tag :options="dict.type.cloth_order_status" :value="scope.row.orderStatus" />
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <pagination v-show="usertotal > 0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize" @pagination="getMemberOrderClothData" />
+                    </el-tab-pane>
+                    <el-tab-pane name="5">
+                        <span slot="label"><i class="el-icon-bank-card"></i> 会员卡</span>
+                        <el-table v-loading="userloading" :data="userinfoData">
+                            <el-table-column label="卡号" align="center" prop="cardNo" width="250px" fixed="left" />
+                            <el-table-column label="充值订单编号" align="center" prop="orderNo" width="250px" />
+                            <el-table-column label="充值金额(元)" align="center" prop="rechargeAmount" width="200px" />
+                            <el-table-column label="赠送金额(元)" align="center" prop="giveAmount" width="200px" />
+                            <el-table-column label="充值余额(元)" align="center" prop="rechargeBalance" width="200px" />
+                            <el-table-column label="赠送余额(元)" align="center" prop="giveBalance" width="200px" />
+                            <el-table-column label="积分金额" align="center" prop="pointBalance" width="200px" />
+                            <el-table-column label="赠送积分" align="center" prop="givePointAmount" width="200px" />
+                            <el-table-column label="福利金额(元)" align="center" prop="welfareAmount" width="200px" />
+                            <el-table-column label="福利金余额(元)" align="center" prop="welfareBalance" width="200px" />
+                            <el-table-column label="使用状态" align="center" prop="rechargeStatus" width="250px">
+                                <template slot-scope="scope">
+                                    <el-tag v-if="scope.row.rechargeStatus == 1">已使用</el-tag>
+                                    <el-tag type="info" v-else>未使用</el-tag>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="删除状态" align="center" prop="rechargeStatus" width="250px">
+                                <template slot-scope="scope">
+                                    <el-tag v-if="scope.row.delFlag == 0">正常</el-tag>
+                                    <el-tag type="danger" v-else>删除</el-tag>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="充值门店" align="center" prop="rechargeStoreName" width="200px" />
+                            <el-table-column label="充值时间" align="center" prop="rechargeTime" width="200px" />
+                        </el-table>
+                        <pagination v-show="usertotal > 0" :total="usertotal" :page.sync="userViewForm.pageNum" :limit.sync="userViewForm.pageSize" @pagination="getMemberCardData" />
+                    </el-tab-pane>
+                </el-tabs>
+            </div>
+
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="usercancel" style="margin-left: 5%">关 闭</el-button>
+            </div>
+        </el-dialog>
+    </div>
 </template>
 
 <script>
-import {
-  listUser, getUser,
-  delUser, addUser,
-  updateUser, updateUserStatus,
-  getMemberInfoById, getMemberCouponInfo,
-  getMemberBillMstrInfo, getMemberOrderGoodsInfo,
-  getMemberOrderClothInfo, getMemberCardInfoList
-} from "@/api/app/user";
-import EditUser from "./component/editUser"
+import { listUser, getUser, delUser, addUser, updateUser, updateUserStatus, getMemberInfoById, getMemberCouponInfo, getMemberBillMstrInfo, getMemberOrderGoodsInfo, getMemberOrderClothInfo, getMemberCardInfoList } from '@/api/app/user'
+import EditUser from './component/editUser'
 
 export default {
-  name: "User",
-  components: {
-    EditUser
-  },
-  dicts: ['sys_user_sex', 'coupon_type', 'sys_yes_no', 'cloth_order_status', 'order_type', 'recharge_pay_type', 'order_goods_status'],
-  data() {
-    return {
-      userInfoVO: null,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 用户表格数据
-      userList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        phoneNumber: null,
-        nickName: null,
-        realName: null,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        nickName: [{
-          required: true,
-          message: "昵称不能为空",
-          trigger: "blur"
-        }],
-        realName: [{
-          required: true,
-          message: "真实姓名不能为空",
-          trigger: "blur"
-        }],
-        phoneNumber: [{
-          required: true,
-          message: "手机号不能为空",
-          trigger: "blur"
-        }],
-        sex: [{
-          required: true,
-          message: "性别不能为空",
-          trigger: "blur"
-        }],
-      },
-      isDisabled: true,
-      userViewType: false,
-      userInfo: {},
-      userViewForm: {
-        appUserId: 0,
-        pageNum: 1,
-        pageSize: 10
-      },
-      usertotal: 0,
-      userloading: false,
-      userinfoData: [],
-      activeValue: '1',
-    };
-  },
-  created() {
-    this.handleUser();
-    this.getList();
-  },
-  methods: {
-    handleUser() {
-      this.userInfoVO = this.getUserInfo();
-    },
-    /** 查询用户列表 */
-    getList() {
-      this.$nextTick(() => {
-        this.$refs.pagination.handleSearch(true)
-      })
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        phoneNumber: null,
-        nickName: null,
-        realName: null,
-        sex: null,
-        birthday: null,
-        avatarUrl: null,
-        unionId: null,
-        createTime: null,
-        payPassword: null,
-        isUsePayPassword: null,
-        status: "0",
-        level: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length !== 1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.isDisabled = false;
-      this.title = "添加用户";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getUser(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.isDisabled = true;
-        this.title = "修改用户";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      // this.$refs["form"].validate(valid => {
-      //   if (valid) {
-      //     if (this.form.id != null) {
-      //       updateUser(this.form).then(response => {
-      //         this.$modal.msgSuccess("修改成功");
-      //         this.open = false;
-      //         this.getList();
-      //       });
-      //     } else {
-      //       addUser(this.form).then(response => {
-      //         this.$modal.msgSuccess("新增成功");
-      //         this.open = false;
-      //         this.getList();
-      //       });
-      //     }
-      //   }
-      // });
-      this.open = false;
-      this.getList();
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除用户编号为"' + ids + '"的数据项?').then(function () {
-        return delUser(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => { });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('mapi/app/user/export', {
-        ...this.queryParams
-      }, `user_${new Date().getTime()}.xlsx`)
+    name: 'User',
+    components: {
+        EditUser
     },
-    checkClose(done) {
-      this.$confirm('是否关闭表单,关闭后数据将丢失?').then(function () {
-        done()
-      }).then(() => { }).catch(() => { });
-    },
-    handleStatusChange(row) {
-      let text = row.status === "0" ? "启用" : "停用";
-      this.$confirm('确认要' + text + ' ' + row.name + ' 吗?').then(function () {
-        return updateUserStatus(row.id, row.status);
-      }).then(() => {
-        this.$modal.msgSuccess(text + "成功");
-      }).catch(function () {
-        row.status = row.status === "0" ? "1" : "0";
-      });
-    },
-    //客户详情弹框
-    handleView(row) {
-      getMemberInfoById({
-        appUserId: row.id
-      }).then(response => {
-        this.userViewType = true;
-        this.userInfo = response.data;
-        this.userViewForm = {
-          appUserId: row.id,
-          pageNum: 1,
-          pageSize: 15
+    dicts: ['sys_user_sex', 'coupon_type', 'sys_yes_no', 'cloth_order_status', 'order_type', 'recharge_pay_type', 'order_goods_status'],
+    data() {
+        return {
+            userInfoVO: null,
+            // 遮罩层
+            loading: true,
+            // 选中数组
+            ids: [],
+            // 非单个禁用
+            single: true,
+            // 非多个禁用
+            multiple: true,
+            // 显示搜索条件
+            showSearch: true,
+            // 总条数
+            total: 0,
+            // 用户表格数据
+            userList: [],
+            // 弹出层标题
+            title: '',
+            // 是否显示弹出层
+            open: false,
+            // 查询参数
+            queryParams: {
+                phoneNumber: null,
+                nickName: null,
+                realName: null
+            },
+            // 表单参数
+            form: {},
+            // 表单校验
+            rules: {
+                nickName: [
+                    {
+                        required: true,
+                        message: '昵称不能为空',
+                        trigger: 'blur'
+                    }
+                ],
+                realName: [
+                    {
+                        required: true,
+                        message: '真实姓名不能为空',
+                        trigger: 'blur'
+                    }
+                ],
+                phoneNumber: [
+                    {
+                        required: true,
+                        message: '手机号不能为空',
+                        trigger: 'blur'
+                    }
+                ],
+                sex: [
+                    {
+                        required: true,
+                        message: '性别不能为空',
+                        trigger: 'blur'
+                    }
+                ]
+            },
+            isDisabled: true,
+            userViewType: false,
+            userInfo: {},
+            userViewForm: {
+                appUserId: 0,
+                pageNum: 1,
+                pageSize: 10
+            },
+            usertotal: 0,
+            userloading: false,
+            userinfoData: [],
+            activeValue: '1'
         }
-        this.activeValue = '1';
-        this.getMemberCouponData();
-      });
-    },
-    //获取会员优惠券列表
-    getMemberCouponData() {
-      this.userloading = true;
-      getMemberCouponInfo(this.userViewForm).then(response => {
-        this.userinfoData = response.data.records;
-        this.usertotal = response.data.total;
-        this.userloading = false;
-      });
-    },
-    //获取会员消费明细
-    getMemberBillMstrData() {
-      this.userloading = true;
-      getMemberBillMstrInfo(this.userViewForm).then(response => {
-        this.userinfoData = response.data.records;
-        this.usertotal = response.data.total;
-        this.userloading = false;
-      });
-    },
-    //获取会员商品订单信息
-    getMemberOrderGoodsData() {
-      this.userloading = true;
-      getMemberOrderGoodsInfo(this.userViewForm).then(response => {
-        this.userinfoData = response.data.records;
-        this.usertotal = response.data.total;
-        this.userloading = false;
-      });
-    },
-    //获取会员洗衣订单信息
-    getMemberOrderClothData() {
-      this.userloading = true;
-      getMemberOrderClothInfo(this.userViewForm).then(response => {
-        this.userinfoData = response.data.records;
-        this.usertotal = response.data.total;
-        this.userloading = false;
-      });
-    },
-    //总部客户管理- 会员卡列表查询
-    getMemberCardData() {
-      this.userloading = true;
-      getMemberCardInfoList(this.userViewForm).then(response => {
-        this.userinfoData = response.data.records;
-        this.usertotal = response.data.total;
-        this.userloading = false;
-      });
-    },
-    getAddress(userInfo) {
-      return userInfo.province + userInfo.city + userInfo.area + userInfo.address + userInfo.addressDetail
-    },
-    btn_chioc(tab, event) {
-      console.log('tab.index', tab.index)
-      this.userViewForm.pageNum = 1;
-      this.userinfoData = [];
-      if (tab.index === '0') {
-        this.getMemberCouponData()
-      } else if (tab.index === '1') {
-        this.getMemberBillMstrData()
-      } else if (tab.index === '2') {
-        this.getMemberOrderGoodsData()
-      } else if (tab.index === '3') {
-        this.getMemberOrderClothData()
-      } else {
-        this.getMemberCardData()
-      }
     },
-    usercheckClose(done) {
-      this.$confirm('是否关闭客户详情?').then(function () {
-        done()
-      }).then(() => { }).catch(() => { });
+    created() {
+        this.handleUser()
+        this.getList()
     },
-    // 取消按钮
-    usercancel() {
-      this.userViewType = false;
-      this.userInfo = {}
-    },
-    closeDialog() {
-      this.open = false
+    methods: {
+        handleUser() {
+            this.userInfoVO = this.getUserInfo()
+        },
+        /** 查询用户列表 */
+        getList() {
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
+            })
+        },
+        // 取消按钮
+        cancel() {
+            this.open = false
+            this.reset()
+        },
+        // 表单重置
+        reset() {
+            this.form = {
+                id: null,
+                phoneNumber: null,
+                nickName: null,
+                realName: null,
+                sex: null,
+                birthday: null,
+                avatarUrl: null,
+                unionId: null,
+                createTime: null,
+                payPassword: null,
+                isUsePayPassword: null,
+                status: '0',
+                level: null
+            }
+            this.resetForm('form')
+        },
+        /** 搜索按钮操作 */
+        handleQuery() {
+            this.getList()
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+            this.resetForm('queryForm')
+            this.handleQuery()
+        },
+        // 多选框选中数据
+        handleSelectionChange(selection) {
+            this.ids = selection.map((item) => item.id)
+            this.single = selection.length !== 1
+            this.multiple = !selection.length
+        },
+        /** 新增按钮操作 */
+        handleAdd() {
+            this.reset()
+            this.open = true
+            this.isDisabled = false
+            this.title = '添加用户'
+        },
+        /** 修改按钮操作 */
+        handleUpdate(row) {
+            this.reset()
+            const id = row.id || this.ids
+            getUser(id).then((response) => {
+                this.form = response.data
+                this.open = true
+                this.isDisabled = true
+                this.title = '修改用户'
+            })
+        },
+        /** 提交按钮 */
+        submitForm() {
+            // this.$refs["form"].validate(valid => {
+            //   if (valid) {
+            //     if (this.form.id != null) {
+            //       updateUser(this.form).then(response => {
+            //         this.$modal.msgSuccess("修改成功");
+            //         this.open = false;
+            //         this.getList();
+            //       });
+            //     } else {
+            //       addUser(this.form).then(response => {
+            //         this.$modal.msgSuccess("新增成功");
+            //         this.open = false;
+            //         this.getList();
+            //       });
+            //     }
+            //   }
+            // });
+            this.open = false
+            this.getList()
+        },
+        /** 删除按钮操作 */
+        handleDelete(row) {
+            const ids = row.id || this.ids
+            this.$modal
+                .confirm('是否确认删除用户编号为"' + ids + '"的数据项?')
+                .then(function () {
+                    return delUser(ids)
+                })
+                .then(() => {
+                    this.getList()
+                    this.$modal.msgSuccess('删除成功')
+                })
+                .catch(() => {})
+        },
+        /** 导出按钮操作 */
+        handleExport() {
+            this.download(
+                'mapi/app/user/export',
+                {
+                    ...this.queryParams
+                },
+                `user_${new Date().getTime()}.xlsx`
+            )
+        },
+        checkClose(done) {
+            this.$confirm('是否关闭表单,关闭后数据将丢失?')
+                .then(function () {
+                    done()
+                })
+                .then(() => {})
+                .catch(() => {})
+        },
+        handleStatusChange(row) {
+            let text = row.status === '0' ? '启用' : '停用'
+            this.$confirm('确认要' + text + ' ' + row.name + ' 吗?')
+                .then(function () {
+                    return updateUserStatus(row.id, row.status)
+                })
+                .then(() => {
+                    this.$modal.msgSuccess(text + '成功')
+                })
+                .catch(function () {
+                    row.status = row.status === '0' ? '1' : '0'
+                })
+        },
+        //客户详情弹框
+        handleView(row) {
+            getMemberInfoById({
+                appUserId: row.id
+            }).then((response) => {
+                this.userViewType = true
+                this.userInfo = response.data
+                this.userViewForm = {
+                    appUserId: row.id,
+                    pageNum: 1,
+                    pageSize: 15
+                }
+                this.activeValue = '1'
+                this.getMemberCouponData()
+            })
+        },
+        //获取会员优惠券列表
+        getMemberCouponData() {
+            this.userloading = true
+            getMemberCouponInfo(this.userViewForm).then((response) => {
+                this.userinfoData = response.data.records
+                this.usertotal = response.data.total
+                this.userloading = false
+            })
+        },
+        //获取会员消费明细
+        getMemberBillMstrData() {
+            this.userloading = true
+            getMemberBillMstrInfo(this.userViewForm).then((response) => {
+                this.userinfoData = response.data.records
+                this.usertotal = response.data.total
+                this.userloading = false
+            })
+        },
+        //获取会员商品订单信息
+        getMemberOrderGoodsData() {
+            this.userloading = true
+            getMemberOrderGoodsInfo(this.userViewForm).then((response) => {
+                this.userinfoData = response.data.records
+                this.usertotal = response.data.total
+                this.userloading = false
+            })
+        },
+        //获取会员洗衣订单信息
+        getMemberOrderClothData() {
+            this.userloading = true
+            getMemberOrderClothInfo(this.userViewForm).then((response) => {
+                this.userinfoData = response.data.records
+                this.usertotal = response.data.total
+                this.userloading = false
+            })
+        },
+        //总部客户管理- 会员卡列表查询
+        getMemberCardData() {
+            this.userloading = true
+            getMemberCardInfoList(this.userViewForm).then((response) => {
+                this.userinfoData = response.data.records
+                this.usertotal = response.data.total
+                this.userloading = false
+            })
+        },
+        getAddress(userInfo) {
+            return userInfo.province + userInfo.city + userInfo.area + userInfo.address + userInfo.addressDetail
+        },
+        btn_chioc(tab, event) {
+            console.log('tab.index', tab.index)
+            this.userViewForm.pageNum = 1
+            this.userinfoData = []
+            if (tab.index === '0') {
+                this.getMemberCouponData()
+            } else if (tab.index === '1') {
+                this.getMemberBillMstrData()
+            } else if (tab.index === '2') {
+                this.getMemberOrderGoodsData()
+            } else if (tab.index === '3') {
+                this.getMemberOrderClothData()
+            } else {
+                this.getMemberCardData()
+            }
+        },
+        usercheckClose(done) {
+            this.$confirm('是否关闭客户详情?')
+                .then(function () {
+                    done()
+                })
+                .then(() => {})
+                .catch(() => {})
+        },
+        // 取消按钮
+        usercancel() {
+            this.userViewType = false
+            this.userInfo = {}
+        },
+        closeDialog() {
+            this.open = false
+        }
     }
-  }
-};
+}
 </script>
 
 <style lang="scss" scoped>
 .user_drawer {
-  ::v-deep.el-dialog__header {
-    margin-bottom: 10px;
-  }
-  .userContent {
-    padding: 20px;
-    .title {
-      margin-bottom: 20px;
-    }
-    .box-card {
-      margin-bottom: 20px;
+    ::v-deep.el-dialog__header {
+        margin-bottom: 10px;
     }
-    .userinfo {
-      display: flex;
-      .user_image {
-        flex-shrink: 0;
-      }
-      .list_user {
-        flex: 1;
-        padding: 0 20px;
-        display: flex;
-        flex-wrap: wrap;
-        align-items: center;
-        justify-content: space-between;
-        .item_user {
-          width: 50%;
-          display: flex;
-          align-items: center;
-          margin-bottom: 15px;
-          &:last-child {
-            margin-bottom: 0px;
-          }
-          .name {
-            flex-shrink: 0;
-            color: #bbb;
-            width: 100px;
-          }
-          .text {
-            flex: 1;
-          }
+    .userContent {
+        padding: 20px;
+        .title {
+            margin-bottom: 20px;
+        }
+        .box-card {
+            margin-bottom: 20px;
+        }
+        .userinfo {
+            display: flex;
+            .user_image {
+                flex-shrink: 0;
+            }
+            .list_user {
+                flex: 1;
+                padding: 0 20px;
+                display: flex;
+                flex-wrap: wrap;
+                align-items: center;
+                justify-content: space-between;
+                .item_user {
+                    width: 80%;
+                    display: flex;
+                    align-items: center;
+                    margin-bottom: 15px;
+                    &:last-child {
+                        margin-bottom: 0px;
+                    }
+                    .name {
+                        flex-shrink: 0;
+                        color: #bbb;
+                        width: 100px;
+                    }
+                    .text {
+                        flex: 1;
+                    }
+                }
+            }
         }
-      }
-    }
 
-    .el-tabs--border-card {
-      border-radius: 4px;
+        .el-tabs--border-card {
+            border-radius: 4px;
+        }
     }
-  }
 }
 </style>

+ 80 - 196
src/views/cloth/laundryPrice/index.vue

@@ -1,86 +1,68 @@
 <template>
     <div class="app-container">
-        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="衣服名称" prop="name">
-                <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery" />
-            </el-form-item>
-            <el-form-item label="洗衣方式" prop="washModeId">
-                <el-select v-model="queryParams.washModeId" placeholder="请选择洗衣方式" @change="handleQuery" filterable clearable>
-                    <el-option v-for="(item, index) in clothWashModes" :key="index" :label="item.name" :value="item.id" />
-                </el-select>
-            </el-form-item>
-            <el-form-item label="区域" prop="storeAreaId">
-                <el-select v-model="queryParams.storeAreaId" placeholder="请选择区域" clearable @change="handleQuery" filterable>
-                    <el-option v-for="(item, index) in areaList" :key="index" :label="item.name" :value="item.id" />
-                </el-select>
-            </el-form-item>
-            <el-form-item>
-                <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-                <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
-            </el-form-item>
-        </el-form>
-
-        <el-row :gutter="10" class="mb8">
-            <el-col :span="1.5">
-                <el-button type="primary" plain icon="el-icon-document-copy" @click="handleCopy">复制区域</el-button>
-            </el-col>
-            <!-- <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-download"
-
-          @click="importTemplate"
-        >下载导入模板</el-button>
-      </el-col> -->
-            <el-col :span="1.5">
-                <!-- <el-upload
-          class="btn_upload"
-          :action="uploadAction"
-          :data="uploadData"
-          :before-upload="handleBeforeUpload"
-          :on-success="handleUploadSuccess"
-          :on-error="handleUploadError"
-          :show-file-list="false"
-          ref="fileUpload"
-        > -->
-                <el-button type="primary" plain icon="el-icon-upload2" @click="handleImport">导入</el-button>
-                <!-- </el-upload> -->
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button>
+        <el-row :gutter="20">
+            <!--部门数据-->
+            <el-col :span="2" :xs="24" style="margin-top: 80px">
+                <div class="head-container">
+                    <el-tabs v-model="checkWashMode" @tab-click="handleQuery" tab-position="left">
+                        <el-tab-pane v-for="item in clothWashModes" :label="item.name" :name="item.id + ''"></el-tab-pane>
+                    </el-tabs>
+                </div>
             </el-col>
-            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-        </el-row>
+            <el-col :span="22" :xs="24">
+                <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+                    <el-form-item prop="checkStoreAreaId">
+                        <el-tabs v-model="checkStoreAreaId" @tab-click="handleQuery">
+                            <el-tab-pane v-for="item in areaList" :label="item.name" :name="item.id + ''"></el-tab-pane>
+                        </el-tabs>
+                        <!--                <el-select v-model="queryParams.storeAreaId" placeholder="请选择区域" clearable @change="handleQuery" filterable>-->
+                        <!--                    <el-option v-for="(item, index) in areaList" :key="index" :label="item.name" :value="item.id" />-->
+                        <!--                </el-select>-->
+                    </el-form-item>
+                    <div></div>
+                    <el-form-item prop="name">
+                        <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery" />
+                    </el-form-item>
 
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="laundryList">
-            <el-table-column label="衣服ID" align="center" prop="clothId" />
-            <el-table-column label="衣服名称" align="center" prop="name" />
-            <el-table-column label="洗衣方式名称" align="center" prop="washModeName" />
-            <el-table-column label="价格" align="center" prop="price">
-                <template slot-scope="scope">
-                    {{ scope.row.price ? scope.row.price : '未设置价格' }}
-                </template>
-            </el-table-column>
-            <el-table-column label="区域" align="center" prop="areaName" />
+                    <el-form-item>
+                        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+                        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+                    </el-form-item>
+                </el-form>
 
-            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="120">
-                <template slot-scope="scope">
-                    <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">设置</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
+                <!--        <el-row :gutter="10" class="mb8">-->
+                <!--          <el-button type="primary" plain icon="el-icon-document-copy" @click="handleCopy">复制区域</el-button>-->
 
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+                <!--            -->
+                <!--        </el-row>-->
+                <!--                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
+                <Page uri="/mapi/cloth/price/getClothPriceListByWashMode" :request-params="queryParams" ref="pagination">
+                    <el-table-column label="衣服ID" align="center" prop="clothId" />
+                    <el-table-column label="区域" align="center" prop="areaName" />
+                    <el-table-column label="衣服名称" align="center" prop="name" />
+                    <el-table-column label="洗衣方式名称" align="center" prop="washModeName" />
+                    <el-table-column label="价格" align="center" prop="price">
+                        <template slot-scope="scope">
+                            {{ scope.row.price ? scope.row.price : '未设置价格' }}
+                        </template>
+                    </el-table-column>
 
+                    <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="120">
+                        <template slot-scope="scope">
+                            <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">设置</el-button>
+                        </template>
+                    </el-table-column>
+                </Page>
+            </el-col>
+        </el-row>
         <!--  设置价格  -->
-        <el-dialog title="设置价格" :visible.sync="laundryPriceType" width="30%" :before-close="handleClose">
-            <form ref="laundrypriceForm">
-                <el-input-number v-model="laundrypriceForm.price" :min="1" :max="99999" :step="1" style="width: 100%" />
+        <el-dialog title="设置价格" :visible.sync="unitPriceType" width="30%" :before-close="handleClose">
+            <form ref="unitpriceForm">
+                <el-input-number v-model="unitpriceForm.price" :min="1" :max="99999" :step="1" style="width: 100%" />
             </form>
             <span slot="footer" class="dialog-footer">
-                <el-button @click="laundryPriceType = false">取 消</el-button>
-                <el-button type="primary" @click="setunitPrice('laundrypriceForm')">提 交</el-button>
+                <el-button @click="unitPriceType = false">取 消</el-button>
+                <el-button type="primary" @click="setunitPrice('unitpriceForm')">提 交</el-button>
             </span>
         </el-dialog>
 
@@ -112,29 +94,12 @@
                 <el-button @click="cancel">取 消</el-button>
             </div>
         </el-dialog>
-
-        <!-- 导入对话框 -->
-        <el-dialog :title="upload.title" :visible.sync="upload.open" width="40%" append-to-body>
-            <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?storeAreaId=' + upload.storeAreaId" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
-                <i class="el-icon-upload"></i>
-                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                <div class="el-upload__tip text-center" slot="tip">
-                    <span>仅允许导入xls、xlsx格式文件。</span>
-                    <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
-                </div>
-            </el-upload>
-            <div slot="footer" class="dialog-footer">
-                <el-button type="primary" @click="submitFileForm">确 定</el-button>
-                <el-button @click="upload.open = false">取 消</el-button>
-            </div>
-        </el-dialog>
     </div>
 </template>
 
 <script>
 import { listStoreArea } from '@/api/system/storeArea'
-import { getClothPriceListByWashMode, setPriceByWashMode, setPriceByWashModeCopyArea, getWashMode } from '@/api/cloth/unitPrice'
-import { getToken } from '@/utils/auth'
+import { getClothPriceListByWashMode, getWashMode, setPriceByClothType, setPriceByClothTypeCopyArea, setPriceByWashMode } from '@/api/cloth/unitPrice'
 
 export default {
     name: 'laundryPrice',
@@ -155,15 +120,17 @@ export default {
             total: 0,
             clothType: null,
             // 单价表格数据
-            laundryList: [],
+            unitPriceList: [],
+            checkStoreAreaId: '1',
+            checkWashMode: '1',
             // 弹出层标题
             title: '',
             // 是否显示弹出层
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
+                washModeId: null,
+                storeAreaId: null,
                 name: null
             },
             // 表单参数
@@ -175,45 +142,24 @@ export default {
                 multiple: [{ required: true, message: '清填写价格倍数', trigger: 'blur' }]
             },
             areaList: [],
-            laundryPriceType: false,
-            laundrypriceForm: {},
-
             clothWashModes: [],
-
-            // 导入参数
-            upload: {
-                // 是否显示弹出层(单价导入)
-                open: false,
-                // 弹出层标题(单价导入)
-                title: '',
-                // 是否禁用上传
-                isUploading: false,
-                //区域id
-                storeAreaId: '',
-                // 设置上传的请求头部
-                headers: { Authorization: 'Bearer ' + getToken() },
-                // 上传的地址
-                url: process.env.VUE_APP_BASE_API + '/mapi/cloth/price/importData'
-            }
+            unitPriceType: false,
+            unitpriceForm: {}
         }
     },
     created() {
-        this.clothType = this.getUrlParam('clothType')
-    },
-    async mounted() {
         this.getAreaList()
-        await this.getwashList()
+        this.getwashList()
         this.getList()
     },
     methods: {
         /** 查询衣服品牌列表 */
         getList() {
-            this.loading = true
-            getClothPriceListByWashMode(this.queryParams).then((response) => {
-                console.log(response)
-                this.laundryList = response.data.records
-                this.total = response.data.total
-                this.loading = false
+            console.log('@@@@@@' + this.checkWashMode)
+            this.queryParams.storeAreaId = parseInt(this.checkStoreAreaId)
+            this.queryParams.washModeId = parseInt(this.checkWashMode)
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         getAreaList() {
@@ -221,6 +167,11 @@ export default {
                 this.areaList = res.rows
             })
         },
+        getwashList() {
+            getWashMode().then((res) => {
+                this.clothWashModes = res.data
+            })
+        },
         // 表单重置
         reset() {
             this.form = {
@@ -237,7 +188,6 @@ export default {
         },
         /** 搜索按钮操作 */
         handleQuery() {
-            this.queryParams.pageNum = 1
             this.getList()
         },
         /** 重置按钮操作 */
@@ -251,14 +201,14 @@ export default {
         },
         /** 设置按钮操作 */
         handleUpdate(row) {
-            this.laundrypriceForm = Object.assign({}, row)
-            this.laundryPriceType = true
+            this.unitpriceForm = Object.assign({}, row)
+            this.unitPriceType = true
         },
         /** 提交按钮 */
         submitForm() {
             this.$refs['form'].validate((valid) => {
                 if (valid) {
-                    setPriceByWashModeCopyArea(this.form).then((response) => {
+                    setPriceByWashMode({ ...this.form, ...{ washMode: this.checkWashMode } }).then((response) => {
                         this.$modal.msgSuccess('复制成功')
                         this.open = false
                         this.getList()
@@ -276,13 +226,13 @@ export default {
         },
 
         setunitPrice() {
-            if (!this.laundrypriceForm.price) {
+            if (!this.unitpriceForm.price) {
                 this.$modal.msgError('请输入价格')
                 return
             }
-            setPriceByWashMode(this.laundrypriceForm).then((response) => {
+            setPriceByWashMode({ ...this.unitpriceForm, ...{ washMode: this.checkWashMode } }).then((response) => {
                 this.$modal.msgSuccess('设置成功')
-                this.laundryPriceType = false
+                this.unitPriceType = false
                 this.getList()
             })
         },
@@ -293,66 +243,6 @@ export default {
                     done()
                 })
                 .catch((_) => {})
-        },
-
-        getwashList() {
-            getWashMode().then((res) => {
-                this.clothWashModes = res.data
-                this.queryParams.washModeId = this.clothWashModes[0].washModeId
-            })
-        },
-
-        /** 导出按钮操作 */
-        handleExport() {
-            if (!this.queryParams.storeAreaId) {
-                this.$modal.msgError('请选择区域')
-                return
-            }
-            let primary = {
-                storeAreaId: this.queryParams.storeAreaId
-            }
-            const up_name = this.areaList.find((item) => item.id === this.queryParams.storeAreaId)?.name
-            this.downloadJson(
-                '/mapi/cloth/price/exportData',
-                {
-                    ...primary
-                },
-                `${up_name}衣服单价列表.xlsx`
-            )
-        },
-        /** 导入按钮操作 */
-        handleImport() {
-            if (!this.queryParams.storeAreaId) {
-                this.$modal.msgError('请选择区域')
-                return false
-            }
-            this.upload.storeAreaId = this.queryParams.storeAreaId
-            const up_name = this.areaList.find((item) => item.id === this.queryParams.storeAreaId)?.name
-
-            this.upload.title = `【${up_name}】 洗衣方式单价导入`
-            this.upload.open = true
-        },
-        /** 下载模板操作 */
-        importTemplate() {
-            this.download('/mapi/cloth/price/downloadTemplate', {}, `衣服单价导入模板.xlsx`)
-        },
-
-        // 文件上传中处理
-        handleFileUploadProgress(event, file, fileList) {
-            this.upload.isUploading = true
-        },
-        // 文件上传成功处理
-        handleFileSuccess(response, file, fileList) {
-            this.upload.open = false
-            this.upload.isUploading = false
-            this.$refs.upload.clearFiles()
-            var respMsg = response.code == '200' ? '' : '导入失败!'
-            this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + respMsg + '<br/>' + response.msg + '</div>', '导入结果', { dangerouslyUseHTMLString: true })
-            this.getList()
-        },
-        // 提交上传文件
-        submitFileForm() {
-            this.$refs.upload.submit()
         }
     }
 }
@@ -369,10 +259,4 @@ export default {
     border-radius: 5px;
     line-height: 25px;
 }
-::v-deep .el-upload {
-    width: 100%;
-    .el-upload-dragger {
-        width: 100%;
-    }
-}
 </style>

+ 378 - 0
src/views/cloth/laundryPrice/index_.vue

@@ -0,0 +1,378 @@
+<template>
+    <div class="app-container">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form-item prop="name">
+                <el-input v-model="queryParams.name" placeholder="请输入衣服名称" clearable @keyup.enter.native="handleQuery" />
+            </el-form-item>
+            <el-form-item label="洗衣方式" prop="washModeId">
+                <el-select v-model="queryParams.washModeId" placeholder="请选择洗衣方式" @change="handleQuery" filterable clearable>
+                    <el-option v-for="(item, index) in clothWashModes" :key="index_" :label="item.name" :value="item.id" />
+                </el-select>
+            </el-form-item>
+            <el-form-item label="区域" prop="storeAreaId">
+                <el-select v-model="queryParams.storeAreaId" placeholder="请选择区域" clearable @change="handleQuery" filterable>
+                    <el-option v-for="(item, index) in areaList" :key="index_" :label="item.name" :value="item.id" />
+                </el-select>
+            </el-form-item>
+            <el-form-item>
+                <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+                <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+            </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+                <el-button type="primary" plain icon="el-icon-document-copy" @click="handleCopy">复制区域</el-button>
+            </el-col>
+            <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-download"
+
+          @click="importTemplate"
+        >下载导入模板</el-button>
+      </el-col> -->
+            <el-col :span="1.5">
+                <!-- <el-upload
+          class="btn_upload"
+          :action="uploadAction"
+          :data="uploadData"
+          :before-upload="handleBeforeUpload"
+          :on-success="handleUploadSuccess"
+          :on-error="handleUploadError"
+          :show-file-list="false"
+          ref="fileUpload"
+        > -->
+                <el-button type="primary" plain icon="el-icon-upload2" @click="handleImport">导入</el-button>
+                <!-- </el-upload> -->
+            </el-col>
+            <el-col :span="1.5">
+                <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" fit highlight-current-row border stripe :data="laundryList">
+            <el-table-column label="衣服ID" align="center" prop="clothId" />
+            <el-table-column label="衣服名称" align="center" prop="name" />
+            <el-table-column label="洗衣方式名称" align="center" prop="washModeName" />
+            <el-table-column label="价格" align="center" prop="price">
+                <template slot-scope="scope">
+                    {{ scope.row.price ? scope.row.price : '未设置价格' }}
+                </template>
+            </el-table-column>
+            <el-table-column label="区域" align="center" prop="areaName" />
+
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="120">
+                <template slot-scope="scope">
+                    <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">设置</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+
+        <!--  设置价格  -->
+        <el-dialog title="设置价格" :visible.sync="laundryPriceType" width="30%" :before-close="handleClose">
+            <form ref="laundrypriceForm">
+                <el-input-number v-model="laundrypriceForm.price" :min="1" :max="99999" :step="1" style="width: 100%" />
+            </form>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="laundryPriceType = false">取 消</el-button>
+                <el-button type="primary" @click="setunitPrice('laundrypriceForm')">提 交</el-button>
+            </span>
+        </el-dialog>
+
+        <!-- 复制区域 -->
+        <el-dialog title="区域复制" :visible.sync="open" size="30%" append-to-body>
+            <el-row :gutter="15">
+                <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+                    <el-col :span="24">
+                        <el-form-item label="选择区域" prop="storeAreaIdFrom">
+                            <el-select v-model="form.storeAreaIdFrom" placeholder="请选择区域" clearable filterable>
+                                <el-option v-for="(item, index) in areaList" :key="index_" :label="item.name" :value="item.id" :disabled="item.id == form.storeAreaIdTo" />
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="复制区域" prop="storeAreaIdTo">
+                            <el-select v-model="form.storeAreaIdTo" placeholder="请选择复制区域" clearable filterable>
+                                <el-option v-for="(item, index) in areaList" :key="index_" :label="item.name" :value="item.id" :disabled="item.id == form.storeAreaIdFrom" />
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="价格倍数" prop="multiple">
+                            <el-input-number v-model="form.multiple" :min="0.01" :max="100" :step="0.01" style="width: 100%" />
+                            <div class="remark">价格倍数是以选择区域为底数乘以当前选择的价格倍数,最终得到复制区域的价格体系</div>
+                        </el-form-item>
+                    </el-col>
+                </el-form>
+            </el-row>
+
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitForm" style="margin-left: 5%">提交</el-button>
+                <el-button @click="cancel">取 消</el-button>
+            </div>
+        </el-dialog>
+
+        <!-- 导入对话框 -->
+        <el-dialog :title="upload.title" :visible.sync="upload.open" width="40%" append-to-body>
+            <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?storeAreaId=' + upload.storeAreaId" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+                <div class="el-upload__tip text-center" slot="tip">
+                    <span>仅允许导入xls、xlsx格式文件。</span>
+                    <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
+                </div>
+            </el-upload>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitFileForm">确 定</el-button>
+                <el-button @click="upload.open = false">取 消</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { listStoreArea } from '@/api/system/storeArea'
+import { getClothPriceListByWashMode, setPriceByWashMode, setPriceByWashModeCopyArea, getWashMode } from '@/api/cloth/unitPrice'
+import { getToken } from '@/utils/auth'
+
+export default {
+    name: 'laundryPrice',
+    dicts: ['sys_normal_disable'],
+    data() {
+        return {
+            // 遮罩层
+            loading: true,
+            // 选中数组
+            ids: [],
+            // 非单个禁用
+            single: true,
+            // 非多个禁用
+            multiple: true,
+            // 显示搜索条件
+            showSearch: true,
+            // 总条数
+            total: 0,
+            clothType: null,
+            // 单价表格数据
+            laundryList: [],
+            // 弹出层标题
+            title: '',
+            // 是否显示弹出层
+            open: false,
+            // 查询参数
+            queryParams: {
+                pageNum: 1,
+                pageSize: 10,
+                name: null
+            },
+            // 表单参数
+            form: {},
+            // 表单校验
+            rules: {
+                storeAreaIdFrom: [{ required: true, message: '请选择区域', trigger: 'change' }],
+                storeAreaIdTo: [{ required: true, message: '请选择复制区域', trigger: 'change' }],
+                multiple: [{ required: true, message: '清填写价格倍数', trigger: 'blur' }]
+            },
+            areaList: [],
+            laundryPriceType: false,
+            laundrypriceForm: {},
+
+            clothWashModes: [],
+
+            // 导入参数
+            upload: {
+                // 是否显示弹出层(单价导入)
+                open: false,
+                // 弹出层标题(单价导入)
+                title: '',
+                // 是否禁用上传
+                isUploading: false,
+                //区域id
+                storeAreaId: '',
+                // 设置上传的请求头部
+                headers: { Authorization: 'Bearer ' + getToken() },
+                // 上传的地址
+                url: process.env.VUE_APP_BASE_API + '/mapi/cloth/price/importData'
+            }
+        }
+    },
+    created() {
+        this.clothType = this.getUrlParam('clothType')
+    },
+    async mounted() {
+        this.getAreaList()
+        await this.getwashList()
+        this.getList()
+    },
+    methods: {
+        /** 查询衣服品牌列表 */
+        getList() {
+            this.loading = true
+            getClothPriceListByWashMode(this.queryParams).then((response) => {
+                console.log(response)
+                this.laundryList = response.data.records
+                this.total = response.data.total
+                this.loading = false
+            })
+        },
+        getAreaList() {
+            listStoreArea({ pageSize: 10000, pageNum: 1, status: '0' }).then((res) => {
+                this.areaList = res.rows
+            })
+        },
+        // 表单重置
+        reset() {
+            this.form = {
+                storeAreaIdFrom: null,
+                storeAreaIdTo: null,
+                multiple: null
+            }
+            this.resetForm('form')
+        },
+        // 取消按钮
+        cancel() {
+            this.reset()
+            this.open = false
+        },
+        /** 搜索按钮操作 */
+        handleQuery() {
+            this.queryParams.pageNum = 1
+            this.getList()
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+            this.resetForm('queryForm')
+            this.handleQuery()
+        },
+        /** 区域复制按钮操作 */
+        handleCopy() {
+            this.open = true
+        },
+        /** 设置按钮操作 */
+        handleUpdate(row) {
+            this.laundrypriceForm = Object.assign({}, row)
+            this.laundryPriceType = true
+        },
+        /** 提交按钮 */
+        submitForm() {
+            this.$refs['form'].validate((valid) => {
+                if (valid) {
+                    setPriceByWashModeCopyArea(this.form).then((response) => {
+                        this.$modal.msgSuccess('复制成功')
+                        this.open = false
+                        this.getList()
+                    })
+                }
+            })
+        },
+        checkClose(done) {
+            this.$confirm('是否关闭表单,关闭后数据将丢失?')
+                .then(function () {
+                    done()
+                })
+                .then(() => {})
+                .catch(() => {})
+        },
+
+        setunitPrice() {
+            if (!this.laundrypriceForm.price) {
+                this.$modal.msgError('请输入价格')
+                return
+            }
+            setPriceByWashMode(this.laundrypriceForm).then((response) => {
+                this.$modal.msgSuccess('设置成功')
+                this.laundryPriceType = false
+                this.getList()
+            })
+        },
+
+        handleClose(done) {
+            this.$confirm('是否关闭设置表单?')
+                .then((_) => {
+                    done()
+                })
+                .catch((_) => {})
+        },
+
+        getwashList() {
+            getWashMode().then((res) => {
+                this.clothWashModes = res.data
+                this.queryParams.washModeId = this.clothWashModes[0].washModeId
+            })
+        },
+
+        /** 导出按钮操作 */
+        handleExport() {
+            if (!this.queryParams.storeAreaId) {
+                this.$modal.msgError('请选择区域')
+                return
+            }
+            let primary = {
+                storeAreaId: this.queryParams.storeAreaId
+            }
+            const up_name = this.areaList.find((item) => item.id === this.queryParams.storeAreaId)?.name
+            this.downloadJson(
+                '/mapi/cloth/price/exportData',
+                {
+                    ...primary
+                },
+                `${up_name}衣服单价列表.xlsx`
+            )
+        },
+        /** 导入按钮操作 */
+        handleImport() {
+            if (!this.queryParams.storeAreaId) {
+                this.$modal.msgError('请选择区域')
+                return false
+            }
+            this.upload.storeAreaId = this.queryParams.storeAreaId
+            const up_name = this.areaList.find((item) => item.id === this.queryParams.storeAreaId)?.name
+
+            this.upload.title = `【${up_name}】 洗衣方式单价导入`
+            this.upload.open = true
+        },
+        /** 下载模板操作 */
+        importTemplate() {
+            this.download('/mapi/cloth/price/downloadTemplate', {}, `衣服单价导入模板.xlsx`)
+        },
+
+        // 文件上传中处理
+        handleFileUploadProgress(event, file, fileList) {
+            this.upload.isUploading = true
+        },
+        // 文件上传成功处理
+        handleFileSuccess(response, file, fileList) {
+            this.upload.open = false
+            this.upload.isUploading = false
+            this.$refs.upload.clearFiles()
+            var respMsg = response.code == '200' ? '' : '导入失败!'
+            this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + respMsg + '<br/>' + response.msg + '</div>', '导入结果', { dangerouslyUseHTMLString: true })
+            this.getList()
+        },
+        // 提交上传文件
+        submitFileForm() {
+            this.$refs.upload.submit()
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.remark {
+    margin-top: 10px;
+    background-color: rgba(255, 228, 74, 0.1);
+    border: 1px dashed #ffe44a;
+    font-size: 14px;
+    color: #e6a23c;
+    width: 100%;
+    padding: 20px;
+    border-radius: 5px;
+    line-height: 25px;
+}
+::v-deep .el-upload {
+    width: 100%;
+    .el-upload-dragger {
+        width: 100%;
+    }
+}
+</style>

+ 6 - 4
src/views/cloth/unitPrice/index.vue

@@ -2,7 +2,7 @@
     <div class="app-container">
         <el-row :gutter="20">
             <!--部门数据-->
-            <el-col :span="2" :xs="24" style="margin-top: 150px">
+            <el-col :span="2" :xs="24" style="margin-top: 80px">
                 <div class="head-container">
                     <el-tabs v-model="checkClothType" @tab-click="handleQuery" tab-position="left">
                         <el-tab-pane v-for="item in clothTypeList" :label="item.name" :name="item.id + ''"></el-tab-pane>
@@ -37,9 +37,11 @@
                 <!--        </el-row>-->
                 <!--                <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
                 <Page uri="/mapi/cloth/price/getClothPriceListByClothType" :request-params="queryParams" ref="pagination">
-                    <el-table-column label="区域" align="center" prop="areaName" />
                     <el-table-column label="衣服ID" align="center" prop="clothId" />
+                    <el-table-column label="区域" align="center" prop="areaName" />
+
                     <el-table-column label="衣服名称" align="center" prop="name" />
+                    <el-table-column label="洗衣类型名称" align="center" prop="typeName" />
                     <el-table-column label="价格" align="center" prop="price">
                         <template slot-scope="scope">
                             {{ scope.row.price ? scope.row.price : '未设置价格' }}
@@ -217,7 +219,7 @@ export default {
         submitForm() {
             this.$refs['form'].validate((valid) => {
                 if (valid) {
-                    setPriceByClothTypeCopyArea({ ...this.form, ...{ clothType: this.clothType } }).then((response) => {
+                    setPriceByClothTypeCopyArea({ ...this.form, ...{ clothType: this.checkClothType } }).then((response) => {
                         this.$modal.msgSuccess('复制成功')
                         this.open = false
                         this.getList()
@@ -239,7 +241,7 @@ export default {
                 this.$modal.msgError('请输入价格')
                 return
             }
-            setPriceByClothType({ ...this.unitpriceForm, ...{ clothType: this.clothType } }).then((response) => {
+            setPriceByClothType({ ...this.unitpriceForm, ...{ clothType: this.checkClothType } }).then((response) => {
                 this.$modal.msgSuccess('设置成功')
                 this.unitPriceType = false
                 this.getList()

+ 5 - 30
src/views/goods/brand/index.vue

@@ -5,7 +5,7 @@
         </el-tabs>
 
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="品牌名称" prop="brandName">
+            <el-form-item prop="brandName">
                 <el-input v-model="queryParams.brandName" placeholder="请输入品牌名称" clearable maxlenth="20" @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
@@ -18,26 +18,10 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['goods:brand:add']">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['goods:brand:edit']">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['goods:brand:remove']">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['core:brand:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="brandList" @selection-change="handleSelectionChange">
+        <Page uri="/mapi/core/brand/list" :request-params="queryParams" ref="pagination">
             <el-table-column type="selection" width="55" align="center" />
             <el-table-column label="品牌编号" align="center" prop="id" />
             <el-table-column label="品牌名称" align="center" prop="brandName" />
@@ -52,9 +36,7 @@
                     <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['goods:brand:remove']">删除</el-button>
                 </template>
             </el-table-column>
-        </el-table>
-
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+        </Page>
 
         <!-- 添加或修改商品品牌管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
@@ -109,8 +91,6 @@ export default {
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
                 brandName: null
             },
             // 表单参数
@@ -135,12 +115,8 @@ export default {
         },
         /** 查询商品品牌管理列表 */
         getList() {
-            this.loading = true
-            this.queryParams.goodsType = this.goodsType
-            listBrand(this.queryParams).then((response) => {
-                this.brandList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮
@@ -165,7 +141,6 @@ export default {
         },
         /** 搜索按钮操作 */
         handleQuery() {
-            this.queryParams.pageNum = 1
             this.getList()
         },
         /** 重置按钮操作 */

+ 9 - 32
src/views/goods/carBeaut/index.vue

@@ -2,20 +2,20 @@
     <div class="app-container">
         <!-- 查询 -->
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="商品名称" prop="goodsName">
+            <el-form-item prop="goodsName">
                 <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
-            <el-form-item label="商品品牌" prop="brandId">
+            <el-form-item prop="brandId">
                 <el-select v-model="queryParams.brandId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="brand in brandList" :key="brand.id" :label="brand.brandName" :value="brand.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品分类" prop="goodsCategoryId">
+            <el-form-item prop="goodsCategoryId">
                 <el-select v-model="queryParams.goodsCategoryId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="category in categoryList" :key="category.id" :label="category.categoryName" :value="category.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品编号" prop="goodsCode">
+            <el-form-item prop="goodsCode">
                 <el-input v-model="queryParams.goodsCode" placeholder="请输入商品编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
@@ -27,27 +27,10 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['goods:commonGoods:add']" v-if="userInfoVO.userType == '00'">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['goods:commonGoods:edit']" v-if="userInfoVO.userType == '00'">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['goods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['goods:commonGoods:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
         <!-- 列表 -->
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="goodsList" @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
+        <Page uri="/mapi/core/goods/list" :request-params="queryParams" ref="pagination">
             <!--            <el-table-column label="编号" align="center" prop="id" />-->
             <el-table-column label="商品编号" align="center" prop="goodsCode" />
             <el-table-column label="图片" align="center" prop="goodsImg" width="250">
@@ -91,9 +74,8 @@
                     <el-button type="text" icon="el-icon-s-shop" @click="handleSkuUpdate(scope.row)" v-hasPermi="['goods:commonGoods:list']">设置物料</el-button>
                 </template>
             </el-table-column>
-        </el-table>
+        </Page>
         <!-- 分页 -->
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
         <!-- 添加或修改商品管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
             <el-row :gutter="15" style="margin-bottom: 150px">
@@ -194,8 +176,6 @@ export default {
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
                 goodsName: null,
                 goodsType: null,
                 status: null,
@@ -320,11 +300,9 @@ export default {
         },
         /** 查询商品管理列表 */
         getList() {
-            this.loading = true
-            listGoods({ ...this.queryParams, ...{ goodsType: this.goodsType } }).then((response) => {
-                this.goodsList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.queryParams.goodsType = this.goodsType
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮
@@ -358,7 +336,6 @@ export default {
         },
         /** 搜索按钮操作 */
         handleQuery() {
-            this.queryParams.pageNum = 1
             this.getList()
         },
         /** 重置按钮操作 */

+ 5 - 31
src/views/goods/category/index.vue

@@ -4,7 +4,7 @@
             <el-tab-pane v-for="dict in dict.type.goods_type" :label="dict.label" :name="dict.value"></el-tab-pane>
         </el-tabs>
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="分类名称" prop="categoryName">
+            <el-form-item prop="categoryName">
                 <el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable maxlenth="20" @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
@@ -17,27 +17,10 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['goods:category:add']">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['goods:category:edit']">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['goods:category:remove']">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['core:category:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="categoryList" @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
+        <Page uri="/mapi/core/category/list" :request-params="queryParams" ref="pagination">
             <el-table-column label="分类编号" align="center" prop="id" />
             <el-table-column label="分类名称" align="center" prop="categoryName" />
             <el-table-column label="状态" align="center" prop="status">
@@ -51,9 +34,7 @@
                     <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['goods:category:remove']">删除</el-button>
                 </template>
             </el-table-column>
-        </el-table>
-
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+        </Page>
 
         <!-- 添加或修改商品类型管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
@@ -108,8 +89,6 @@ export default {
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
                 categoryName: null
             },
             // 表单参数
@@ -134,12 +113,8 @@ export default {
         },
         /** 查询商品类型管理列表 */
         getList() {
-            this.loading = true
-            this.queryParams.goodsType = this.goodsType
-            listCategory(this.queryParams).then((response) => {
-                this.categoryList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮
@@ -164,7 +139,6 @@ export default {
         },
         /** 搜索按钮操作 */
         handleQuery() {
-            this.queryParams.pageNum = 1
             this.getList()
         },
         /** 重置按钮操作 */

+ 15 - 47
src/views/goods/commonGoods/index.vue

@@ -2,20 +2,20 @@
     <div class="app-container">
         <!-- 查询 -->
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="商品名称" prop="goodsName">
+            <el-form-item prop="goodsName">
                 <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
-            <el-form-item label="商品品牌" prop="brandId">
+            <el-form-item prop="brandId">
                 <el-select v-model="queryParams.brandId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="brand in brandList" :key="brand.id" :label="brand.brandName" :value="brand.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品分类" prop="goodsCategoryId">
+            <el-form-item prop="goodsCategoryId">
                 <el-select v-model="queryParams.goodsCategoryId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="category in categoryList" :key="category.id" :label="category.categoryName" :value="category.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品编号" prop="goodsCode">
+            <el-form-item prop="goodsCode">
                 <el-input v-model="queryParams.goodsCode" placeholder="请输入商品编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
@@ -27,32 +27,15 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['goods:commonGoods:add']" v-if="userInfoVO.userType == '00'">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['goods:commonGoods:edit']" v-if="userInfoVO.userType == '00'">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['goods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['goods:commonGoods:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
         <!-- 列表 -->
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="goodsList" @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
-            <!--            <el-table-column label="编号" align="center" prop="id" />-->
+        <Page uri="/mapi/core/goods/list" :request-params="queryParams" ref="pagination">
+            <el-table-column label="ID" align="center" prop="id" />
             <el-table-column label="商品编号" align="center" prop="goodsCode" />
-            <el-table-column label="图片" align="center" prop="goodsImg" width="250">
+            <el-table-column label="图片" align="center" prop="goodsImg" width="150">
                 <template slot-scope="scope">
-                    <el-image style="width: 150px; height: 150px" :src="scope.row.goodsImg" :preview-src-list="[scope.row.goodsImg]"> </el-image>
+                    <el-image style="width: 100px; height: 100px" :src="scope.row.goodsImg" :preview-src-list="[scope.row.goodsImg]"> </el-image>
                 </template>
             </el-table-column>
             <el-table-column label="商品名称" align="center" prop="goodsName" />
@@ -67,18 +50,8 @@
                     <el-tag v-if="scope.row.isSell == dict.value" v-for="dict in dict.type.sys_yes_no" :label="dict.value" :key="dict.code"> {{ dict.label }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column label="是否余额支付" align="center" prop="isBalancePay">
-                <template slot-scope="scope">
-                    <el-tag v-if="scope.row.isBalancePay == dict.value" v-for="dict in dict.type.sys_yes_no" :label="dict.value" :key="dict.code"> {{ dict.label }}</el-tag>
-                </template>
-            </el-table-column>
-            <el-table-column label="是否现金支付" align="center" prop="isCashPay">
-                <template slot-scope="scope">
-                    <el-tag v-if="scope.row.isCashPay == dict.value" v-for="dict in dict.type.sys_yes_no" :label="dict.value" :key="dict.code"> {{ dict.label }}</el-tag>
-                </template>
-            </el-table-column>
-            <el-table-column label="现金金额(元)" align="center" prop="cashMoney" />
-            <el-table-column label="显示顺序" align="center" prop="sort" />
+            <el-table-column label="金额(元)" align="center" prop="cashMoney" />
+            <el-table-column label="排序值" align="center" prop="sort" />
             <el-table-column label="启用状态" align="center" prop="status">
                 <template slot-scope="scope">
                     <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
@@ -88,13 +61,12 @@
                 <template slot-scope="scope">
                     <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['goods:commonGoods:edit']" v-if="userInfoVO.userType == '00'">修改</el-button>
                     <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['goods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
-                    <el-button type="text" icon="el-icon-s-shop" @click="handleSkuUpdate(scope.row)" v-hasPermi="['goods:commonGoods:list']">设置物料</el-button>
+                    <el-button type="text" icon="el-icon-s-shop" @click="handleSkuUpdate(scope.row)" v-hasPermi="['goods:commonGoods:list']">查看规格</el-button>
                     <el-button type="text" icon="el-icon-view" v-if="goodsType != 1" @click="gotoComment(scope.row)">查看评论</el-button>
                 </template>
             </el-table-column>
-        </el-table>
+        </Page>
         <!-- 分页 -->
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
         <!-- 添加或修改商品管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
             <el-row :gutter="15" style="margin-bottom: 150px">
@@ -196,8 +168,6 @@ export default {
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
                 goodsName: null,
                 goodsType: null,
                 status: null,
@@ -322,11 +292,9 @@ export default {
         },
         /** 查询商品管理列表 */
         getList() {
-            this.loading = true
-            listGoods({ ...this.queryParams, ...{ goodsType: this.goodsType } }).then((response) => {
-                this.goodsList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.queryParams.goodsType = this.goodsType
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮

+ 9 - 32
src/views/goods/commonGoods/setSku.vue

@@ -5,33 +5,17 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['commonGoods:commonGoods:add']" v-if="userInfoVO.userType == '00'">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['commonGoods:commonGoods:edit']">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['commonGoods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['commonGoods:commonGoods:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
         <!-- 列表 -->
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="skuList" @selection-change="handleSelectionChange">
+        <Page uri="/mapi/core/sku/list" :request-params="queryParams" ref="pagination">
             <el-table-column type="selection" width="55" align="center" />
-            <el-table-column label="物料编号" align="center" prop="id" />
+            <el-table-column label="规格编号" align="center" prop="id" />
             <el-table-column label="规格详情" align="center" width="200" :show-overflow-tooltip="true">
                 <template slot-scope="scope">
-                    <div v-for="spec in scope.row.specVoList" :key="spec.id">
+                    <span v-for="spec in scope.row.specVoList" :key="spec.id">
                         <p>{{ spec.specName }}:{{ spec.specValue }}</p>
-                    </div>
+                    </span>
                 </template>
             </el-table-column>
             <el-table-column label="零售价(元)" align="center" prop="salePrice" />
@@ -45,14 +29,13 @@
             </el-table-column>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                 <template slot-scope="scope">
-                    <el-button type="text" icon="el-icon-edit" @click="stockRecord(scope.row)" v-hasPermi="['goods:commonGoods:edit']">库存记录</el-button>
                     <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['goods:commonGoods:edit']">修改</el-button>
+                    <!--                  <el-button type="text" icon="el-icon-edit" @click="stockRecord(scope.row)" v-hasPermi="['goods:commonGoods:edit']">库存记录</el-button>-->
                     <el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['goods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
                 </template>
             </el-table-column>
-        </el-table>
+        </Page>
         <!-- 分页 -->
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
         <!-- 添加或修改商品管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body size="50%">
             <el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="Object.keys(form).length > 0">
@@ -142,10 +125,7 @@ export default {
             // 是否显示弹出层
             open: false,
             // 查询参数
-            queryParams: {
-                pageNum: 1,
-                pageSize: 10
-            },
+            queryParams: {},
             // 表单参数
             form: {
                 salePrice: 0,
@@ -191,11 +171,8 @@ export default {
         },
         /** 查询商品管理列表 */
         getList() {
-            this.loading = true
-            listSku(this.queryParams).then((response) => {
-                this.skuList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮

+ 9 - 32
src/views/goods/lifeService/index.vue

@@ -2,20 +2,20 @@
     <div class="app-container">
         <!-- 查询 -->
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-            <el-form-item label="商品名称" prop="goodsName">
+            <el-form-item prop="goodsName">
                 <el-input v-model="queryParams.goodsName" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
-            <el-form-item label="商品品牌" prop="brandId">
+            <el-form-item prop="brandId">
                 <el-select v-model="queryParams.brandId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="brand in brandList" :key="brand.id" :label="brand.brandName" :value="brand.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品分类" prop="goodsCategoryId">
+            <el-form-item prop="goodsCategoryId">
                 <el-select v-model="queryParams.goodsCategoryId" placeholder="请选择商品分类" clearable>
                     <el-option v-for="category in categoryList" :key="category.id" :label="category.categoryName" :value="category.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="商品编号" prop="goodsCode">
+            <el-form-item prop="goodsCode">
                 <el-input v-model="queryParams.goodsCode" placeholder="请输入商品编号" clearable @keyup.enter.native="handleQuery" />
             </el-form-item>
             <el-form-item>
@@ -27,27 +27,10 @@
             <el-col :span="1.5">
                 <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['goods:commonGoods:add']" v-if="userInfoVO.userType == '00'">新增</el-button>
             </el-col>
-            <el-col :span="1.5">
-                <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate" v-hasPermi="['goods:commonGoods:edit']" v-if="userInfoVO.userType == '00'">修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button type="danger" plain icon="el-icon-delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['goods:commonGoods:remove']" v-if="userInfoVO.userType == '00'">删除</el-button>
-            </el-col>
-            <!--            <el-col :span="1.5">-->
-            <!--                <el-button-->
-            <!--                        type="warning"-->
-            <!--                        plain-->
-            <!--                        icon="el-icon-download"-->
-            <!--                         -->
-            <!--                        @click="handleExport"-->
-            <!--                        v-hasPermi="['goods:commonGoods:export']"-->
-            <!--                >导出</el-button>-->
-            <!--            </el-col>-->
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
         <!-- 列表 -->
-        <el-table v-loading="loading" fit highlight-current-row border stripe :data="goodsList" @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
+        <Page uri="/mapi/core/goods/list" :request-params="queryParams" ref="pagination">
             <!--            <el-table-column label="编号" align="center" prop="id" />-->
             <el-table-column label="商品编号" align="center" prop="goodsCode" />
             <el-table-column label="图片" align="center" prop="goodsImg" width="250">
@@ -92,9 +75,8 @@
                     <el-button type="text" icon="el-icon-view" @click="gotoComment(scope.row)">查看评论</el-button>
                 </template>
             </el-table-column>
-        </el-table>
+        </Page>
         <!-- 分页 -->
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
         <!-- 添加或修改商品管理对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
             <el-row :gutter="15" style="margin-bottom: 150px">
@@ -196,8 +178,6 @@ export default {
             open: false,
             // 查询参数
             queryParams: {
-                pageNum: 1,
-                pageSize: 10,
                 goodsName: null,
                 goodsType: null,
                 status: null,
@@ -322,11 +302,9 @@ export default {
         },
         /** 查询商品管理列表 */
         getList() {
-            this.loading = true
-            listGoods({ ...this.queryParams, ...{ goodsType: this.goodsType } }).then((response) => {
-                this.goodsList = response.rows
-                this.total = response.total
-                this.loading = false
+            this.queryParams.goodsType = this.goodsType
+            this.$nextTick(() => {
+                this.$refs.pagination.handleSearch(true)
             })
         },
         // 取消按钮
@@ -360,7 +338,6 @@ export default {
         },
         /** 搜索按钮操作 */
         handleQuery() {
-            this.queryParams.pageNum = 1
             this.getList()
         },
         /** 重置按钮操作 */