feat: 创建新商户
This commit is contained in:
		
							parent
							
								
									83078e70c7
								
							
						
					
					
						commit
						5abb93d202
					
				| 
						 | 
					@ -15,3 +15,20 @@ export function setMerchantPermissions(data) {
 | 
				
			||||||
    data
 | 
					    data
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function shopBaseConfig(query, data) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/shop/base_config',
 | 
				
			||||||
 | 
					    method: 'put',
 | 
				
			||||||
 | 
					    params: query,
 | 
				
			||||||
 | 
					    data
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function listPlatformCategory(params) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/category/list',
 | 
				
			||||||
 | 
					    method: 'get',
 | 
				
			||||||
 | 
					    params
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,106 @@
 | 
				
			||||||
        <el-form-item label="密码" prop="password">
 | 
					        <el-form-item label="密码" prop="password">
 | 
				
			||||||
          <el-input v-model="form.password" type="password" placeholder="请输入密码"></el-input>
 | 
					          <el-input v-model="form.password" type="password" placeholder="请输入密码"></el-input>
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <h3>店铺基础信息</h3>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位名称" prop="name">
 | 
				
			||||||
 | 
					          <el-input v-model="form.name" placeholder="请输入摊位名称"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="主营类目" prop="categoryId">
 | 
				
			||||||
 | 
					          <el-select v-model="form.categoryId" placeholder="请选择主营类目" style="width: 100%">
 | 
				
			||||||
 | 
					            <el-option
 | 
				
			||||||
 | 
					              v-for="item in categoryList"
 | 
				
			||||||
 | 
					              :key="item.id"
 | 
				
			||||||
 | 
					              :label="item.name"
 | 
				
			||||||
 | 
					              :value="item.id"
 | 
				
			||||||
 | 
					            ></el-option>
 | 
				
			||||||
 | 
					          </el-select>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位背景图" prop="background">
 | 
				
			||||||
 | 
					          <el-upload
 | 
				
			||||||
 | 
					            class="avatar-uploader"
 | 
				
			||||||
 | 
					            :action="uploadUrl"
 | 
				
			||||||
 | 
					            :headers="uploadHeaders"
 | 
				
			||||||
 | 
					            :show-file-list="false"
 | 
				
			||||||
 | 
					            :on-success="handleBackgroundSuccess"
 | 
				
			||||||
 | 
					            :before-upload="beforeAvatarUpload"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <img v-if="form.background" :src="form.background" class="avatar">
 | 
				
			||||||
 | 
					            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 | 
				
			||||||
 | 
					          </el-upload>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位联系电话" prop="contactPhone">
 | 
				
			||||||
 | 
					          <el-input v-model="form.contactPhone" placeholder="请输入联系电话/手机号"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位照片" prop="fileList">
 | 
				
			||||||
 | 
					          <el-upload
 | 
				
			||||||
 | 
					            :action="uploadUrl"
 | 
				
			||||||
 | 
					            :headers="uploadHeaders"
 | 
				
			||||||
 | 
					            list-type="picture-card"
 | 
				
			||||||
 | 
					            :file-list="form.fileList"
 | 
				
			||||||
 | 
					            :on-success="handleFileListSuccess"
 | 
				
			||||||
 | 
					            :before-upload="beforeAvatarUpload"
 | 
				
			||||||
 | 
					            :on-remove="handleRemove"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <i class="el-icon-plus"></i>
 | 
				
			||||||
 | 
					          </el-upload>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位位置" prop="address">
 | 
				
			||||||
 | 
					          <el-input v-model="form.address" placeholder="请输入摊位位置"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="摊位详细地址" prop="detailAddress">
 | 
				
			||||||
 | 
					          <el-input v-model="form.detailAddress" placeholder="请输入摊位详细地址"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="许可证" prop="permits">
 | 
				
			||||||
 | 
					          <el-upload
 | 
				
			||||||
 | 
					            :action="uploadUrl"
 | 
				
			||||||
 | 
					            :headers="uploadHeaders"
 | 
				
			||||||
 | 
					            list-type="picture-card"
 | 
				
			||||||
 | 
					            :file-list="form.permits"
 | 
				
			||||||
 | 
					            :on-success="handlePermitsSuccess"
 | 
				
			||||||
 | 
					            :before-upload="beforeAvatarUpload"
 | 
				
			||||||
 | 
					            :on-remove="handlePermitsRemove"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <i class="el-icon-plus"></i>
 | 
				
			||||||
 | 
					          </el-upload>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="是否自动营业" prop="isAutoBusiness">
 | 
				
			||||||
 | 
					          <el-switch v-model="form.isAutoBusiness"></el-switch>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item v-if="form.isAutoBusiness" label="营业时间">
 | 
				
			||||||
 | 
					          <el-time-picker
 | 
				
			||||||
 | 
					            is-range
 | 
				
			||||||
 | 
					            v-model="businessHours"
 | 
				
			||||||
 | 
					            range-separator="至"
 | 
				
			||||||
 | 
					            start-placeholder="开始时间"
 | 
				
			||||||
 | 
					            end-placeholder="结束时间"
 | 
				
			||||||
 | 
					            placeholder="选择时间范围">
 | 
				
			||||||
 | 
					          </el-time-picker>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="顾客自提点位置" prop="pickName">
 | 
				
			||||||
 | 
					          <el-input v-model="form.pickName" placeholder="请输入顾客自提点位置"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="自提点详细地址" prop="pickAddress">
 | 
				
			||||||
 | 
					          <el-input v-model="form.pickAddress" placeholder="请输入自提点详细地址"></el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="自提点位置示意图" prop="pickImg">
 | 
				
			||||||
 | 
					          <el-upload
 | 
				
			||||||
 | 
					            class="avatar-uploader"
 | 
				
			||||||
 | 
					            :action="uploadUrl"
 | 
				
			||||||
 | 
					            :headers="uploadHeaders"
 | 
				
			||||||
 | 
					            :show-file-list="false"
 | 
				
			||||||
 | 
					            :on-success="handlePickImgSuccess"
 | 
				
			||||||
 | 
					            :before-upload="beforeAvatarUpload"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <img v-if="form.pickImg" :src="form.pickImg" class="avatar">
 | 
				
			||||||
 | 
					            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 | 
				
			||||||
 | 
					          </el-upload>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					        <el-form-item label="承诺送达自提点时间" prop="promisePickDeliveryTime">
 | 
				
			||||||
 | 
					          <el-input v-model.number="form.promisePickDeliveryTime" placeholder="请输入小时数">
 | 
				
			||||||
 | 
					            <template slot="append">小时以内</template>
 | 
				
			||||||
 | 
					          </el-input>
 | 
				
			||||||
 | 
					        </el-form-item>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <template v-if="form.operationType === 'update'">
 | 
					      <template v-if="form.operationType === 'update'">
 | 
				
			||||||
| 
						 | 
					@ -96,9 +196,11 @@ import {
 | 
				
			||||||
  checkUsername,
 | 
					  checkUsername,
 | 
				
			||||||
  resetPassword
 | 
					  resetPassword
 | 
				
			||||||
} from '@/api/modules/subaccount' // Assuming some APIs can be reused
 | 
					} from '@/api/modules/subaccount' // Assuming some APIs can be reused
 | 
				
			||||||
import { inviteJoin, setMerchantPermissions } from '@/api/modules/merchant' // New merchant API
 | 
					import { inviteJoin, setMerchantPermissions, shopBaseConfig, listPlatformCategory } from '@/api/modules/merchant' // New merchant API
 | 
				
			||||||
 | 
					import { mer_admin } from '@/api/modules/mer_admin'
 | 
				
			||||||
import routerConfig from '@/router/full-routers'
 | 
					import routerConfig from '@/router/full-routers'
 | 
				
			||||||
import { mapState } from 'vuex'
 | 
					import { mapState } from 'vuex'
 | 
				
			||||||
 | 
					import cookie from 'js-cookie'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Function to filter the full menu tree based on available permissions
 | 
					// Function to filter the full menu tree based on available permissions
 | 
				
			||||||
const filterTreeByPerms = (tree, availablePerms) => {
 | 
					const filterTreeByPerms = (tree, availablePerms) => {
 | 
				
			||||||
| 
						 | 
					@ -160,8 +262,30 @@ export default {
 | 
				
			||||||
        permissionCodes: [],
 | 
					        permissionCodes: [],
 | 
				
			||||||
        accountId: null,
 | 
					        accountId: null,
 | 
				
			||||||
        enable: true,
 | 
					        enable: true,
 | 
				
			||||||
        selectedMarketId: ''
 | 
					        selectedMarketId: '',
 | 
				
			||||||
 | 
					        name: '',
 | 
				
			||||||
 | 
					        categoryId: '',
 | 
				
			||||||
 | 
					        background: '',
 | 
				
			||||||
 | 
					        isAutoBusiness: true,
 | 
				
			||||||
 | 
					        businessDays: '1111111',
 | 
				
			||||||
 | 
					        startBusinessTime: 0,
 | 
				
			||||||
 | 
					        endBusinessTime: 1440,
 | 
				
			||||||
 | 
					        contactPhone: '',
 | 
				
			||||||
 | 
					        fileList: [],
 | 
				
			||||||
 | 
					        address: '',
 | 
				
			||||||
 | 
					        permits: [],
 | 
				
			||||||
 | 
					        lng: '',
 | 
				
			||||||
 | 
					        lat: '',
 | 
				
			||||||
 | 
					        detailAddress: '',
 | 
				
			||||||
 | 
					        pickName: '',
 | 
				
			||||||
 | 
					        pickLng: '',
 | 
				
			||||||
 | 
					        pickAddress: '',
 | 
				
			||||||
 | 
					        pickLat: '',
 | 
				
			||||||
 | 
					        pickImg: '',
 | 
				
			||||||
 | 
					        promisePickDeliveryTime: '',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      businessHours: [new Date(2016, 9, 10, 0, 0), new Date(2016, 9, 10, 23, 59)],
 | 
				
			||||||
 | 
					      categoryList: [],
 | 
				
			||||||
      merchantAccountList: [], // To be populated with merchant accounts
 | 
					      merchantAccountList: [], // To be populated with merchant accounts
 | 
				
			||||||
      permissionList: [],
 | 
					      permissionList: [],
 | 
				
			||||||
      defaultProps: {
 | 
					      defaultProps: {
 | 
				
			||||||
| 
						 | 
					@ -178,6 +302,34 @@ export default {
 | 
				
			||||||
        password: [
 | 
					        password: [
 | 
				
			||||||
          { required: true, message: "请输入密码", trigger: "blur" },
 | 
					          { required: true, message: "请输入密码", trigger: "blur" },
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
 | 
					        name: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入摊位名称", trigger: "blur" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        categoryId: [
 | 
				
			||||||
 | 
					          { required: true, message: "请选择主营类目", trigger: "change" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        background: [
 | 
				
			||||||
 | 
					          { required: true, message: "请上传摊位背景图", trigger: "change" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        fileList: [
 | 
				
			||||||
 | 
					          { required: true, message: "请上传摊位照片", trigger: "change" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        address: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入摊位位置", trigger: "blur" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        detailAddress: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入摊位详细地址", trigger: "blur" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        pickName: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入顾客自提点位置", trigger: "blur" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        pickAddress: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入自提点详细地址", trigger: "blur" },
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        promisePickDeliveryTime: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入承诺送达自提点时间", trigger: "blur" },
 | 
				
			||||||
 | 
					          { type: 'number', message: '必须为数字值'}
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
        permissionCodes: [
 | 
					        permissionCodes: [
 | 
				
			||||||
          { required: true, message: "请选择菜单权限", trigger: "change", type: 'array' },
 | 
					          { required: true, message: "请选择菜单权限", trigger: "change", type: 'array' },
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
| 
						 | 
					@ -195,7 +347,15 @@ export default {
 | 
				
			||||||
      "marketId",
 | 
					      "marketId",
 | 
				
			||||||
      "shopId",
 | 
					      "shopId",
 | 
				
			||||||
      "markets"
 | 
					      "markets"
 | 
				
			||||||
    ])
 | 
					    ]),
 | 
				
			||||||
 | 
					    uploadUrl() {
 | 
				
			||||||
 | 
					      return mer_admin.uploadFile();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    uploadHeaders() {
 | 
				
			||||||
 | 
					      return {
 | 
				
			||||||
 | 
					        token: cookie.get('token')
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  watch: {
 | 
					  watch: {
 | 
				
			||||||
    'form.operationType'(newType) {
 | 
					    'form.operationType'(newType) {
 | 
				
			||||||
| 
						 | 
					@ -219,8 +379,14 @@ export default {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  created() {
 | 
					  created() {
 | 
				
			||||||
    this.getPermissions();
 | 
					    this.getPermissions();
 | 
				
			||||||
 | 
					    this.getPlatformCategory();
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
 | 
					    getPlatformCategory() {
 | 
				
			||||||
 | 
					      listPlatformCategory({ type: this.isCloudShop ? 1 : 0 }).then(res => {
 | 
				
			||||||
 | 
					        this.categoryList = res.data.data;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    getPermissions() {
 | 
					    getPermissions() {
 | 
				
			||||||
      getAvailablePermissions().then((res) => {
 | 
					      getAvailablePermissions().then((res) => {
 | 
				
			||||||
        const availablePerms = (res && res.data && Array.isArray(res.data.data)) ? res.data.data : [];
 | 
					        const availablePerms = (res && res.data && Array.isArray(res.data.data)) ? res.data.data : [];
 | 
				
			||||||
| 
						 | 
					@ -249,6 +415,36 @@ export default {
 | 
				
			||||||
    handleTreeCheck() {
 | 
					    handleTreeCheck() {
 | 
				
			||||||
      this.form.permissionCodes = this.$refs.permissionTree.getCheckedKeys(true);
 | 
					      this.form.permissionCodes = this.$refs.permissionTree.getCheckedKeys(true);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    handleBackgroundSuccess(res) {
 | 
				
			||||||
 | 
					      this.form.background = res.data;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handleFileListSuccess(res, file, fileList) {
 | 
				
			||||||
 | 
					      this.form.fileList = fileList;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handlePermitsSuccess(res, file, fileList) {
 | 
				
			||||||
 | 
					      this.form.permits = fileList;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handlePickImgSuccess(res) {
 | 
				
			||||||
 | 
					      this.form.pickImg = res.data;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    beforeAvatarUpload(file) {
 | 
				
			||||||
 | 
					      const isJPG = file.type === 'image/jpeg';
 | 
				
			||||||
 | 
					      const isLt2M = file.size / 1024 / 1024 < 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (!isJPG) {
 | 
				
			||||||
 | 
					        this.$message.error('上传头像图片只能是 JPG 格式!');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (!isLt2M) {
 | 
				
			||||||
 | 
					        this.$message.error('上传头像图片大小不能超过 2MB!');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return isJPG && isLt2M;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handleRemove(file, fileList) {
 | 
				
			||||||
 | 
					      this.form.fileList = fileList;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handlePermitsRemove(file, fileList) {
 | 
				
			||||||
 | 
					      this.form.permits = fileList;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    // To be implemented
 | 
					    // To be implemented
 | 
				
			||||||
    // loadMerchantAccountList() {
 | 
					    // loadMerchantAccountList() {
 | 
				
			||||||
    //   getMerchantAccountList().then(res => {
 | 
					    //   getMerchantAccountList().then(res => {
 | 
				
			||||||
| 
						 | 
					@ -286,16 +482,26 @@ export default {
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            inviteJoin(createData).then((res) => {
 | 
					            inviteJoin(createData).then((res) => {
 | 
				
			||||||
              const merchantAccountId = res.data.data.merchantId; // Assuming this is the merchant ID
 | 
					              const merchantAccountId = res.data.data.merchantId; // Assuming this is the merchant ID
 | 
				
			||||||
 | 
					              const shopId = res.data.data.shopId; // Assuming this is the shop ID
 | 
				
			||||||
              const permissionsData = {
 | 
					              const permissionsData = {
 | 
				
			||||||
                merchantAccountId,
 | 
					                merchantAccountId,
 | 
				
			||||||
                permissionCodes: this.form.permissionCodes,
 | 
					                permissionCodes: this.form.permissionCodes,
 | 
				
			||||||
                marketId
 | 
					                marketId
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
              setMerchantPermissions(permissionsData).then(() => {
 | 
					              setMerchantPermissions(permissionsData).then(() => {
 | 
				
			||||||
                this.$message.success('商户创建成功且权限已设置');
 | 
					                const shopData = {
 | 
				
			||||||
 | 
					                  ...this.form,
 | 
				
			||||||
 | 
					                  imgs: this.form.fileList.map(f => f.url).join(','),
 | 
				
			||||||
 | 
					                  permits: this.form.permits.map(f => f.url).join(','),
 | 
				
			||||||
 | 
					                  startBusinessTime: this.businessHours[0].getHours() * 60 + this.businessHours[0].getMinutes(),
 | 
				
			||||||
 | 
					                  endBusinessTime: this.businessHours[1].getHours() * 60 + this.businessHours[1].getMinutes(),
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                shopBaseConfig({ shopId }, shopData).then(() => {
 | 
				
			||||||
 | 
					                  this.$message.success('商户创建成功,权限及店铺信息已设置');
 | 
				
			||||||
                  this.$refs.ruleFormRef.resetFields();
 | 
					                  this.$refs.ruleFormRef.resetFields();
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
              });
 | 
					              });
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
          } else if (this.form.operationType === 'update') {
 | 
					          } else if (this.form.operationType === 'update') {
 | 
				
			||||||
            if (!this.form.accountId) {
 | 
					            if (!this.form.accountId) {
 | 
				
			||||||
              this.$message.error('请先选择要更新的商户账号');
 | 
					              this.$message.error('请先选择要更新的商户账号');
 | 
				
			||||||
| 
						 | 
					@ -323,4 +529,26 @@ export default {
 | 
				
			||||||
.app-container {
 | 
					.app-container {
 | 
				
			||||||
  padding: 20px;
 | 
					  padding: 20px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</style>
 | 
					.avatar-uploader .el-upload {
 | 
				
			||||||
 | 
					    border: 1px dashed #d9d9d9;
 | 
				
			||||||
 | 
					    border-radius: 6px;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .avatar-uploader .el-upload:hover {
 | 
				
			||||||
 | 
					    border-color: #409EFF;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .avatar-uploader-icon {
 | 
				
			||||||
 | 
					    font-size: 28px;
 | 
				
			||||||
 | 
					    color: #8c939d;
 | 
				
			||||||
 | 
					    width: 178px;
 | 
				
			||||||
 | 
					    height: 178px;
 | 
				
			||||||
 | 
					    line-height: 178px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .avatar {
 | 
				
			||||||
 | 
					    width: 178px;
 | 
				
			||||||
 | 
					    height: 178px;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
		Loading…
	
		Reference in New Issue