peng
14 小时以前 7a648ed5c64a234198dafc0c541b91e990e237d9
manager/src/views/member/list/index.vue
@@ -14,6 +14,12 @@
          <Form-item label="联系方式" prop="mobile">
            <Input type="text" v-model="searchForm.mobile" placeholder="请输入会员联系方式" clearable style="width: 200px" />
          </Form-item>
          <Form-item label="用户标签" prop="tags">
            <Select v-model="searchForm.tagIds" multiple filterable :loading="selectLoading" style="width:200px;">
              <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
            </Select>
          </Form-item>
          <Button @click="handleSearch" class="search-btn" type="primary" icon="ios-search">搜索</Button>
        </Form>
      </Row>
@@ -52,14 +58,14 @@
    <Modal v-model="descFlag" :title="descTitle" @on-ok="handleSubmitModal" width="500">
      <Form ref="form" :model="form" :rules="ruleValidate" :label-width="80">
        <Input v-model="form.id" v-show="false"/>
        <Input v-model="form.id" v-show="false" />
        <FormItem label="头像">
          <img :src="form.face || defaultPic" class="face" />
          <Button type="text" class="upload" @click="() => {
                this.picModelFlag = true;
                this.$refs.ossManage.selectImage = true;
              }">修改</Button>
            this.picModelFlag = true;
            this.$refs.ossManage.selectImage = true;
          }">修改</Button>
          <input type="file" style="display: none" id="file" />
        </FormItem>
        <FormItem label="用户名" prop="name">
@@ -67,6 +73,14 @@
        </FormItem>
        <FormItem label="用户昵称" prop="name">
          <Input v-model="form.nickName" style="width: 200px" />
        </FormItem>
        <FormItem label="标签" prop="tags">
          <Select v-model="selectTagIds" multiple filterable :loading="selectLoading" style="width:200px;">
            <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
          </Select>
        </FormItem>
        <FormItem label="用户自定义标签" prop="customerTags">
          <span class="inf0o" v-for="(item,index) in memberTags" :key="index">{{item.tagName}}<span v-if="index < memberTags.length - 1">, </span></span>
        </FormItem>
        <FormItem label="性别" prop="sex">
          <RadioGroup type="button" button-style="solid" v-model="form.sex">
@@ -78,25 +92,22 @@
            </Radio>
          </RadioGroup>
        </FormItem>
        <FormItem label="修改密码" prop="password">
          <Input type="password" style="width: 220px" password v-model="form.newPassword" />
        </FormItem>
<!--        <FormItem label="修改密码" prop="password">-->
<!--          <Input type="password" style="width: 220px" password v-model="form.newPassword" />-->
<!--        </FormItem>-->
        <FormItem label="生日" prop="birthday">
          <DatePicker type="date" format="yyyy-MM-dd" v-model="form.birthday" style="width: 220px"></DatePicker>
        </FormItem>
        <FormItem label="所在地" prop="mail">
          {{ form.region || '暂无地址' }}
          <Button style="margin-left: 10px;" @click="$refs.map.open()">选择</Button>
        </FormItem>
      </Form>
    </Modal>
    <Modal width="1200px" v-model="picModelFlag">
      <ossManage @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" ref="ossManage" />
    </Modal>
    <multipleMap ref="map" @callback="selectedRegion"/>
    <multipleMap ref="map" @callback="selectedRegion" />
  </div>
</template>
@@ -105,6 +116,8 @@
import * as API_Member from "@/api/member.js";
import ossManage from "@/views/sys/oss-manage/ossManage";
import * as RegExp from "@/libs/RegExp.js";
import { getTags } from "@/api/tag.js";
import { detailById } from "@/api/memberCustomerTag.js"
export default {
  name: "member",
@@ -114,12 +127,16 @@
  },
  data() {
    return {
      defaultPic:require('@/assets/default.png'),
      memberTags:[],
      defaultPic: require('@/assets/default.png'),
      descTitle: "", // modal标题
      descFlag: false, //编辑查看框
      loading: true, // 表单加载状态
      addFlag: false, // modal显隐控制
      selectLoading: false,
      options: [],
      selectTagIds: [],
      selectTags: [],
      addMemberForm: {
        // 添加用户表单
        mobile: "",
@@ -134,6 +151,7 @@
        username: "",
        mobile: "",
        disabled: "OPEN",
        tagIds:[],
      },
      picModelFlag: false, // 选择图片
      form: {}, // 表单数据
@@ -321,9 +339,16 @@
    },
  },
  methods: {
    getMemberTags(id){
      detailById(id).then(res =>{
        if (res.code === 200){
          this.memberTags = res.data;
        }
      });
    },
    // 回调给父级
    callback(val, index) {
      this.selectMember.forEach(item=>{item.___selected = false})
      this.selectMember.forEach(item => { item.___selected = false })
      this.$set(val, "___selected", !val.___selected);
      console.log(val.___selected);
      console.log(this.selectMember);
@@ -378,9 +403,10 @@
    },
    //查看详情修改
    editPerm(val) {
      this.form = {};
      this.descTitle = `查看用户 ${val.username}`;
      this.descFlag = true;
      this.getMemberTags(val.id);
      this.getMemberInfo(val.id);
    },
    addMember() {
@@ -391,8 +417,16 @@
     * 查询查看会员详情
     */
    getMemberInfo(id) {
      var that = this;
      API_Member.getMemberInfoData(id).then((res) => {
        if (res.result) {
          debugger
          that.selectTags = []
          that.selectTagIds = []
          res.result.tags.forEach(element => {
            that.selectTags.push(element.tagName)
            that.selectTagIds.push(element.tagId)
          });
          this.$set(this, "form", res.result);
        }
      });
@@ -410,6 +444,7 @@
    },
    // 选中的图片
    callbackSelected(val) {
      console.log(val)
      this.picModelFlag = false;
      this.form.face = val.url;
    },
@@ -432,17 +467,17 @@
    // 选中的地址
    selectedRegion(val) {
      if(val.type === 'select'){
      if (val.type === 'select') {
        const paths = val.data.map(item => item.name).join(',')
        const ids = val.data.map(item => item.id).join(',')
        this.$set(this.form,'region',paths)
        this.$set(this.form,'regionId',ids)
        this.$set(this.form, 'region', paths)
        this.$set(this.form, 'regionId', ids)
      }
      else{
        this.$set(this.form,'region',val.data.addr)
        this.$set(this.form,'regionId',val.data.addrId)
      else {
        this.$set(this.form, 'region', val.data.addr)
        this.$set(this.form, 'regionId', val.data.addrId)
      }
    },
    //查看会员
@@ -474,9 +509,10 @@
    // 提交修改数据
    handleSubmitModal() {
      const { nickName, sex, username, face, newPassword,id,regionId,region } = this.form;
      debugger
      const { nickName, sex, username, face, newPassword, id, regionId, region } = this.form;
      let time = new Date(this.form.birthday);
      let birthday = this.form.birthday=== undefined?'':
      let birthday = this.form.birthday === undefined ? '' :
        time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
      let submit = {
        regionId,
@@ -489,6 +525,7 @@
        id
      };
      submit.tags = this.selectTagIds
      if (newPassword) {
        submit.password = this.md5(newPassword);
      }
@@ -499,9 +536,35 @@
        }
      });
    },
    selectTag(e) {
      debugger
      if (this.selectTagIds.indexOf(e.value) != -1) {
        this.selectTagIds.splice(this.selectTagIds.indexOf(e.value), 1)
        this.selectTags.splice(this.selectTags.indexOf(e.label), 1)
      }
      else {
        this.selectTagIds.push(e.value)
        this.selectTags.push(e.label)
      }
      console.log(this.selectTags);
    },
    remoteMethod(query) {
      this.selectLoading = true;
      var params = {
        "tagTypeKey": "USER",
        "pageNumber": 1,
        "pageSize": 500
      }
      getTags(params).then(res => {
        this.options = res.data;
        this.selectLoading = false;
      });
    },
  },
  mounted() {
    this.getData();
    this.remoteMethod("")
  },
};
</script>
@@ -509,9 +572,11 @@
/deep/ .ivu-table-wrapper {
  width: 100%;
}
/deep/ .ivu-card {
  width: 100%;
}
.face {
  width: 60px;
  height: 60px;