riku
2024-04-24 da51e7d5bbf5ff1610209510571e94d0523b515c
src/views/fytz/user/UserInfo.vue
@@ -3,10 +3,14 @@
    <template #options>
      <FYOptionLocation
        :allOption="true"
        :level="4"
        :level="5"
        v-model:value="formSearch._locations"
      ></FYOptionLocation>
      <FYOptionText label="关键字" placeholder="输入名称关键字" v-model:value="formSearch.searchText"></FYOptionText>
      <FYOptionText
        label="场景名称"
        placeholder="输入名称关键字"
        v-model:value="formSearch.searchText"
      ></FYOptionText>
      <FYOptionScene
        :allOption="true"
        :type="1"
@@ -19,13 +23,7 @@
    </template>
    <template #table-column>
      <el-table-column
        type="index"
        fixed="left"
        prop="userInfo.realname"
        label="名称"
        width="400"
      >
      <el-table-column type="index" fixed="left" prop="userInfo.realname" label="名称" width="400">
        <template #default="scope">
          <el-tooltip
            effect="dark"
@@ -38,54 +36,84 @@
        </template>
      </el-table-column>
      <el-table-column prop="userInfo.acountname" label="账号" width="110" />
      <el-table-column prop="sceneTypeName" label="类型" width="130" />
      <el-table-column prop="biProvinceName" label="省" width="90" />
      <el-table-column prop="biCityName" label="市" width="90" />
      <el-table-column prop="sceneTypeName" label="类型" width="100" />
      <el-table-column prop="biProvinceName" label="省" width="80" />
      <el-table-column prop="biCityName" label="市" width="80" />
      <!-- <el-table-column prop="districtname" label="区县" width="90" /> -->
      <el-table-column prop="userInfo.extension1" label="区县" width="90" />
      <el-table-column prop="userInfo.extension1" label="区县" width="80" />
      <el-table-column prop="biTownName" label="街道" width="110" />
      <el-table-column prop="biArea" label="集中区" width="110" />
      <el-table-column prop="biManagementCompany" label="物业" min-width="110"/>
      <el-table-column prop="biManagementCompany" label="物业" min-width="110" />
      <el-table-column prop="userInfo.isenable" label="状态" width="90">
        <template #default="scope">
          {{ scope.row.userInfo.isenable ? '上线中' : '已下线' }}
        <template #default="{ row }">
          {{ row.userInfo.isenable ? '上线中' : '已下线' }}
        </template>
      </el-table-column>
      <el-table-column prop="userInfo.usertype" label="用户类型" width="90" />
      <el-table-column fixed="right" align="right" label="操作" width="140">
      <el-table-column fixed="right" align="right" label="操作" width="190">
        <template #header>
          <el-button
            icon="DocumentAdd"
            size="default"
            type="success"
            @click="drawer = true"
          <el-button icon="DocumentAdd" size="default" type="success" @click="drawer = true"
            >新增用户</el-button
          >
        </template>
        <template #default="scope">
          <el-button
            :loading="scope.row.loading1"
            type="primary"
            size="small"
            @click="editRow(scope)"
            >查看</el-button
          >
          <!-- <el-button
            :loading="scope.row.loading2"
            :type="scope.row.extension1 != '0' ? 'danger' : 'primary'"
            size="small"
            @click="itemActive(scope)"
            >{{ scope.row.extension1 != '0' ? '下线' : '上线' }}</el-button
          > -->
        <template #default="{ row }">
          <el-space>
            <el-button
              :loading="row.loading2"
              :type="row.userInfo.isenable != '0' ? 'danger' : 'primary'"
              size="small"
              @click="itemActive(row)"
              >{{ row.userInfo.isenable != '0' ? '下线' : '上线' }}</el-button
            >
            <el-button-group>
              <el-button type="primary" :loading="row.loading1" size="small" @click="editRow(row)"
                >查看</el-button
              >
              <el-dropdown @command="handleCommand" trigger="click">
                <el-button
                  type="primary"
                  :loading="row.downloadLoading"
                  size="small"
                  :icon="row.downloadLoading ? '' : 'ArrowDown'"
                ></el-button>
                <template #dropdown>
                  <el-dropdown-menu>
                    <el-dropdown-item icon="Download" :command="{ c: 1, p: row }"
                      >下载环信码</el-dropdown-item
                    >
                  </el-dropdown-menu>
                </template>
              </el-dropdown>
            </el-button-group>
            <!-- <el-dropdown
              split-button
              :loading="row.loading1"
              size="small"
              type="primary"
              @click="editRow(row)"
              @command="handleCommand"
              trigger="click"
            >
              查看
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item icon="Download" :command="{ c: 1, p: row }"
                    >下载环信码</el-dropdown-item
                  >
                </el-dropdown-menu>
              </template>
            </el-dropdown> -->
          </el-space>
        </template>
      </el-table-column>
    </template>
  </FYTable>
  <CompUserInfoAddDrawer v-model:drawer="drawer"></CompUserInfoAddDrawer>
  <CompUserInfoAddDrawer v-model="drawer"></CompUserInfoAddDrawer>
</template>
<script>
import userApi from '@/api/fytz/userApi';
import creditApi from '@/api/fytz/creditApi';
import { useLoadingStore } from '@/stores/loadingStore';
import { mapStores } from 'pinia';
import { useMessageBoxTip } from '@/composables/messageBox';
@@ -93,34 +121,36 @@
export default {
  components: {
    CompUserInfoAddDrawer,
    CompUserInfoAddDrawer
  },
  data() {
    return {
      // 查询条件
      formSearch: {
        _locations: {},
        searchText: '',
        scensetype: {},
        online: {},
        online: {}
      },
      drawer: false,
      // 新增用户弹出框
      drawer: false
    };
  },
  computed: {
    ...mapStores(useLoadingStore),
    ...mapStores(useLoadingStore)
  },
  methods: {
    onSearch(page, func) {
      const f = this.formSearch;
      const area = {};
      // 行政区划
      area.provinceCode = f._locations.pCode ? f._locations.pCode + '0000' : undefined
      area.provinceCode = f._locations.pCode;
      area.provinceName = f._locations.pName;
      if (area.provinceCode == null) {
        area.provinceCode = null;
        area.provinceName = null;
      }
      area.cityCode = f._locations.cCode ? f._locations.cCode.substring(0, 3) + '100' : undefined
      area.cityCode = f._locations.cCode;
      area.cityName = f._locations.cName;
      area.districtCode = f._locations.dCode;
      area.districtName = f._locations.dName;
@@ -140,43 +170,59 @@
        if (res) {
          func({
            data: res.data,
            total: res.head.totalCount,
            total: res.head.totalCount
          });
        }
      });
    },
    editRow(scope) {
      scope.row.loading1 = true;
      this.loadingStore.loadingStatus.push(() => (scope.row.loading1 = false));
      this.$router.push(`userEdit/${scope.row.biGuid}`);
    editRow(row) {
      row.loading1 = true;
      this.loadingStore.pushLoading(() => (row.loading1 = false));
      this.$router.push(`userEdit/${row.userInfo.guid}`);
    },
    itemActive(scope) {
      const rb = {};
      rb.guid = scope.row.guid;
      rb.extension1 = scope.row.extension1 != '0' ? '0' : '1';
      const msg = scope.row.extension1 != '0' ? '下线' : '上线';
    itemActive(row) {
      const param = {
        guid: row.userInfo.guid,
        isenable: !row.userInfo.isenable
      };
      const msg = row.userInfo.isenable ? '下线' : '上线';
      useMessageBoxTip({
        confirmMsg: `确认${msg}该场景?`,
        confirmTitle: msg,
        onConfirm: () => {
          scope.row.loading2 = true;
        onConfirm: async () => {
          row.loading2 = true;
          return userApi
            .updateScene(rb)
            .updateUserInfo(param)
            .then((res) => {
              if (res == 1) {
                scope.row.extension1 = rb.extension1;
              if (res.success) {
                row.userInfo.isenable = param.isenable;
              }
            })
            .finally(() => {
              scope.row.loading2 = false;
              row.loading2 = false;
            });
        },
        }
      });
    },
    tableRowClassName({ row }) {
      return row.userInfo.isenable ? 'online-row' : 'offline-row';
    },
  },
    handleCommand(e) {
      const userId = e.p.userInfo.guid;
      switch (e.c) {
        // 下载环信码
        case 1:
          e.p.downloadLoading = true;
          creditApi.downloadCode(userId).finally(() => {
            e.p.downloadLoading = false;
          });
          break;
        default:
          break;
      }
    }
  }
};
</script>
<style></style>