瀏覽代碼

Project Init

yigeren911 1 年之前
父節點
當前提交
3b3d9a7b46

+ 151 - 145
src/components/table/index.vue

@@ -1,119 +1,123 @@
 <template>
-    <el-table
-        ref="tableRef"
-        class="ba-data-table w100"
-        header-cell-class-name="table-header-cell"
-        :default-expand-all="baTable.table.expandAll"
-        :data="baTable.table.data"
-        :row-key="baTable.table.pk"
-        :border="true"
-        :row-class-name="baTable.table.rowStyle"
-        :header-row-class-name="baTable.table.headerRowStyle"
-        v-loading="baTable.table.loading"
-        stripe
-        @select-all="onSelectAll"
-        @select="onSelect"
-        @selection-change="onSelectionChange"
-        @sort-change="onSortChange"
-        @row-dblclick="baTable.onTableDblclick"
-        v-bind="$attrs"
-        id="table"
-    >
-        <template v-for="(item, key) in baTable.table.column" :key="key">
-            <Column v-if="item.show !== false" :attr="item">
-                <template v-if="item.render" #default="scope">
-                    <FieldRender
-                        :field="item"
-                        :key="item.render == 'switch' ? 'column-' + scope.column.property + '-' + key + '-' + scope.row[scope.column.property] : 0"
-                        :row="scope.row"
-                        :property="scope.column.property"
-                    />
-                </template>
-            </Column>
+  <el-table
+    ref="tableRef"
+    class="ba-data-table w100"
+    header-cell-class-name="table-header-cell"
+    :default-expand-all="baTable.table.expandAll"
+    :data="baTable.table.data"
+    :row-key="baTable.table.pk"
+    :border="true"
+    :row-class-name="baTable.table.rowStyle"
+    :header-row-class-name="baTable.table.headerRowStyle"
+    v-loading="baTable.table.loading"
+    stripe
+    @select-all="onSelectAll"
+    @select="onSelect"
+    @selection-change="onSelectionChange"
+    @sort-change="onSortChange"
+    @row-dblclick="baTable.onTableDblclick"
+    v-bind="$attrs"
+    id="table"
+  >
+    <slot name="head"></slot>
+    <template v-for="(item, key) in baTable.table.column" :key="key">
+      <slot :name="'col-'+key"></slot>
+      <Column v-if="item.show !== false" :attr="item">
+        <template v-if="item.render" #default="scope">
+          <FieldRender
+            :field="item"
+            :key="item.render == 'switch' ? 'column-' + scope.column.property + '-' + key + '-' + scope.row[scope.column.property] : 0"
+            :row="scope.row"
+            :property="scope.column.property"
+          />
         </template>
-    </el-table>
-    <div v-if="pagination" class="table-pagination">
-        <el-pagination
-            :currentPage="state.currentPage"
-            :page-size="state.pageSize"
-            :page-sizes="[10, 20, 50, 100]"
-            background
-            :layout="config.layout.shrink ? 'prev, next, jumper' : 'sizes, ->, prev, pager, next, jumper'"
-            :total="baTable.table.total"
-            @size-change="onTableSizeChange"
-            @current-change="onTableCurrentChange"
-        ></el-pagination>
-    </div>
+      </Column>
+    </template>
+    <slot name="end"></slot>
+  </el-table>
+  <div v-if="pagination" class="table-pagination">
+    <el-pagination
+      :currentPage="state.currentPage"
+      :page-size="state.pageSize"
+      :page-sizes="[10, 20, 50, 100]"
+      background
+      :layout="config.layout.shrink ? 'prev, next, jumper' : 'sizes, ->, prev, pager, next, jumper'"
+      :total="baTable.table.total"
+      @size-change="onTableSizeChange"
+      @current-change="onTableCurrentChange"
+    ></el-pagination>
+  </div>
 </template>
 
 <script setup lang="ts">
-import {ref, nextTick, reactive, inject, onMounted} from 'vue'
-import type { ElTable } from 'element-plus'
-import Column from '/@/components/table/column/index.vue'
-import FieldRender from '/@/components/table/fieldRender/index.vue'
-import { useConfig } from '/@/stores/config'
-import type baTableClass from '/@/utils/baTable'
+import { ref, nextTick, reactive, inject, onMounted } from "vue";
+import type { ElTable } from "element-plus";
+import Column from "/@/components/table/column/index.vue";
+import FieldRender from "/@/components/table/fieldRender/index.vue";
+import { useConfig } from "/@/stores/config";
+import type baTableClass from "/@/utils/baTable";
 
-const config = useConfig()
-const tableRef = ref<InstanceType<typeof ElTable>>()
-const baTable = inject('baTable') as baTableClass
+const config = useConfig();
+const tableRef = ref<InstanceType<typeof ElTable>>();
+const baTable = inject("baTable") as baTableClass;
 
-onMounted(()=>{
+onMounted(() => {
 
-})
+});
 
 interface Props {
-    pagination?: boolean
+  pagination?: boolean;
 }
+
 const props = withDefaults(defineProps<Props>(), {
-    pagination: true,
-})
+  pagination: true
+});
 
 const state = reactive({
-    currentPage: 1,
-    pageSize: 10,
-})
+  currentPage: 1,
+  pageSize: 10
+});
 
 const emits = defineEmits<{
-    (e: 'action', event: string, data: anyObj): void
-}>()
+  (e: "action", event: string, data: anyObj): void
+}>();
 
 const onTableSizeChange = (val: number) => {
-    state.pageSize = val
-    emits('action', 'page-size-change', {
-        size: val,
-    })
-}
+  state.pageSize = val;
+  emits("action", "page-size-change", {
+    size: val
+  });
+};
 
 const onTableCurrentChange = (val: number) => {
-    state.currentPage = val
-    emits('action', 'current-page-change', {
-        page: val,
-    })
-}
+  state.currentPage = val;
+  emits("action", "current-page-change", {
+    page: val
+  });
+};
 
 const onSortChange = ({ order, prop }: { order: string; prop: string }) => {
-    emits('action', 'sort-change', {
-        prop: prop,
-        order: order ? (order == 'ascending' ? 'asc' : 'desc') : '',
-    })
-}
+  emits("action", "sort-change", {
+    prop: prop,
+    order: order ? (order == "ascending" ? "asc" : "desc") : ""
+  });
+};
 
 /*
  * 全选和取消全选
  * 实现子级同时选择和取消选中
  */
 const onSelectAll = (selection: TableRow[]) => {
-    if (isSelectAll(selection.map((row: TableRow) => row.id.toString()))) {
-        selection.map((row: TableRow) => {
-            if (row.children) {
-                selectChildren(row.children, true)
-            }
-        })
-    } else {
-        tableRef.value?.clearSelection()
-    }
-}
+  if (isSelectAll(selection.map((row: TableRow) => row.id.toString()))) {
+    selection.map((row: TableRow) => {
+      if (row.children) {
+        selectChildren(row.children, true);
+      }
+    });
+  } else {
+    tableRef.value?.clearSelection();
+  }
+};
 
 /*
  * 是否是全选操作
@@ -122,106 +126,108 @@ const onSelectAll = (selection: TableRow[]) => {
  * 取消全选时:selectIds为所有子元素的id
  */
 const isSelectAll = (selectIds: string[]) => {
-    let data = baTable.table.data as TableRow[]
-    for (const key in data) {
-        return selectIds.includes(data[key].id.toString())
-    }
-    return false
-}
+  let data = baTable.table.data as TableRow[];
+  for (const key in data) {
+    return selectIds.includes(data[key].id.toString());
+  }
+  return false;
+};
 
 /*
  * 选择子项-递归
  */
 const selectChildren = (children: TableRow[], type: boolean) => {
-    children.map((j: TableRow) => {
-        toggleSelection(j, type)
-        if (j.children) {
-            selectChildren(j.children, type)
-        }
-    })
-}
+  children.map((j: TableRow) => {
+    toggleSelection(j, type);
+    if (j.children) {
+      selectChildren(j.children, type);
+    }
+  });
+};
 
 /*
  * 执行选择操作
  */
 const toggleSelection = (row: TableRow, type: boolean) => {
-    if (row) {
-        nextTick(() => {
-            tableRef.value?.toggleRowSelection(row, type)
-        })
-    }
-}
+  if (row) {
+    nextTick(() => {
+      tableRef.value?.toggleRowSelection(row, type);
+    });
+  }
+};
 
 /*
  * 手动选择时,同时选择子级
  */
 const onSelect = (selection: TableRow[], row: TableRow) => {
-    if (
-        selection.some((item: TableRow) => {
-            return row.id === item.id
-        })
-    ) {
-        if (row.children) {
-            selectChildren(row.children, true)
-        }
-    } else {
-        if (row.children) {
-            selectChildren(row.children, false)
-        }
+  if (
+    selection.some((item: TableRow) => {
+      return row.id === item.id;
+    })
+  ) {
+    if (row.children) {
+      selectChildren(row.children, true);
     }
-}
+  } else {
+    if (row.children) {
+      selectChildren(row.children, false);
+    }
+  }
+};
 
 /*
  * 记录选择的项
  */
 const onSelectionChange = (selection: TableRow[]) => {
-    emits('action', 'selection-change', selection)
-}
+  emits("action", "selection-change", selection);
+};
 
 /*
  * 设置折叠所有-递归
  */
 const setUnFoldAll = (children: TableRow[], unfold: boolean) => {
-    for (const key in children) {
-        tableRef.value?.toggleRowExpansion(children[key], unfold)
-        if (children[key].children) {
-            setUnFoldAll(children[key].children!, unfold)
-        }
+  for (const key in children) {
+    tableRef.value?.toggleRowExpansion(children[key], unfold);
+    if (children[key].children) {
+      setUnFoldAll(children[key].children!, unfold);
     }
-}
+  }
+};
 
 /*
  * 折叠所有
  */
 const unFoldAll = (unfold: boolean) => {
-    setUnFoldAll(baTable.table.data!, unfold)
-}
+  setUnFoldAll(baTable.table.data!, unfold);
+};
 
 const getRef = () => {
-    return tableRef.value
-}
+  return tableRef.value;
+};
 
 defineExpose({
-    unFoldAll,
-    getRef,
-})
+  unFoldAll,
+  getRef
+});
 </script>
 
 <style scoped lang="scss">
 .ba-data-table :deep(.el-button + .el-button) {
-    margin-left: 6px;
+  margin-left: 6px;
 }
+
 .ba-data-table :deep(.table-header-cell) .cell {
-    color: var(--color-text-primary);
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
+  color: var(--color-text-primary);
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
+
 .table-pagination {
-    box-sizing: border-box;
-    width: 100%;
-    max-width: 100%;
-    background-color: #ffffff;
-    padding: 13px 15px;
+  box-sizing: border-box;
+  width: 100%;
+  max-width: 100%;
+  background-color: #ffffff;
+  padding: 13px 15px;
 }
 </style>

+ 288 - 0
src/views/backend/enterprise/members/askbuy/auditDialog.vue

@@ -0,0 +1,288 @@
+<template>
+  <el-dialog title="委托详情" v-model="showDialog" width="1200px" @close="closeDialog">
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <div style="border: #d9d9d9 1px solid">
+          <div style="padding:10px;background-color: #d9d9d9">用户提交</div>
+          <el-descriptions
+            class="margin-top"
+
+            :column="1"
+            border
+          >
+            <el-descriptions-item width="250" label="区县">
+              {{ data.districtName }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="小区">
+              {{ data.communityName }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="楼号">
+              {{ data.buildingNumber }}
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="车位编号">
+              <el-tag>{{ data.parkingNumber }}</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item width="250" label="车位类型">
+              {{ data.parkingType == 1 ? "车库" : "车位" }}
+            </el-descriptions-item>
+            <el-descriptions-item label="面积">
+              {{ data.area }}
+            </el-descriptions-item>
+            <el-descriptions-item label="售卖方式">
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==0">租售</el-tag>
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==1">出租</el-tag>
+              <el-tag style="margin: 0px 3px" v-if="data.entrustType==2">出售</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="售价">
+              {{ data.salePrice }}
+            </el-descriptions-item>
+            <el-descriptions-item label="租金">
+              {{ data.hirePrice }}
+            </el-descriptions-item>
+            <el-descriptions-item label="委托人联系电话">
+              {{ data.contactNumber }}
+            </el-descriptions-item>
+            <el-descriptions-item label="证明文件">
+              <el-image v-if="data.evidenceFile.length>0"
+                        style="width: 100px; height: 100px"
+                        :src="data.evidenceFile[0].url"
+                        :zoom-rate="1"
+                        :preview-src-list="data.evidenceFile.map(item=> item.url)"
+                        fit="cover"
+              />
+            </el-descriptions-item>
+          </el-descriptions>
+        </div>
+      </el-col>
+
+
+      <el-col :span="16">
+        <div style="border: #d9d9d9 1px solid">
+          <div style="padding:10px;background-color: #d9d9d9">审核登记</div>
+
+          <el-form ref="formRef" :model="formData" label-position="right" label-width="100px"
+                   :rules="formRules">
+            <el-tabs style="margin: 0 20px" v-model="activeTab">
+              <el-tab-pane name="first" label="车位信息">
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item label="区县" prop="districtId">
+                      <el-select v-model="formData.districtId" style="width: 50%" @change="getCommunity">
+                        <el-option v-for="item in districtList" :label="item.districtName" :value="item.id"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item label="小区" prop="communityName">
+                      <el-select v-if="!communityNameCustom" v-model="formData.communityName" style="width: 50%">
+                        <el-option v-for="item in communityList" :label="item.communityName"
+                                   :value="item.communityName"></el-option>
+                      </el-select>
+                      <el-input v-else v-model="formData.communityName" style="width: 50%"></el-input>
+                      <el-checkbox v-model="communityNameCustom" style="margin-left: 20px">自定义</el-checkbox>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item label="楼号" prop="buildingNumber">
+                      <el-select v-if="!buildingNumberCustom&&!communityNameCustom" v-model="formData.buildingNumber"
+                                 @visible-change="getBuilding" style="width: 50%">
+                        <el-option v-for="item in buildingList" :label="item.buildingNumber"
+                                   :value="item.buildingNumber"></el-option>
+                      </el-select>
+                      <el-input v-else v-model="formData.buildingNumber" style="width: 50%"></el-input>
+                      <el-checkbox v-model="buildingNumberCustom" style="margin-left: 20px">自定义</el-checkbox>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item label="车位编号" prop="parkingNumber">
+                      <el-input v-model="formData.parkingNumber" style="width: 50%"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item prop="pictureUrl" label="主展示图">
+                      <pictureUpload v-model="formData.pictureUrl"></pictureUpload>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="24">
+                    <el-form-item prop="parkingUrl" label="车位照片">
+                      <pictureUpload2 :limit="10" v-model="formData.parkingUrl"></pictureUpload2>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-tab-pane>
+              <el-tab-pane name="second" label="车位简介">
+                <el-form-item label="" prop="parkingShow" label-width="0">
+                  <editor v-model="formData.parkingShow"></editor>
+                </el-form-item>
+              </el-tab-pane>
+            </el-tabs>
+
+          </el-form>
+        </div>
+      </el-col>
+    </el-row>
+
+
+    <template #footer>
+      <el-button type="success" @click="submit(true)">审核通过</el-button>
+      <el-button type="danger" @click="submit(false)">拒绝</el-button>
+    </template>
+
+  </el-dialog>
+</template>
+
+<script setup>
+
+import { reactive, ref } from "vue";
+import request from "/@/api/request";
+import { building_list, community_list, district_list, entrust } from "/@/api/controllerUrls";
+import { ElMessage } from "element-plus";
+import pictureUpload from "/@/components/pictureUpload/index.vue";
+import pictureUpload2 from "/@/components/pictureUpload/multiple.vue";
+import editor from "/@/components/editor/index.vue";
+
+
+let showDialog = ref(false);
+
+
+defineExpose({
+  open
+});
+
+
+let data = ref({});
+
+let communityNameCustom = ref(false); //小区名自定义
+let buildingNumberCustom = ref(false); //楼号自定义
+
+function open(event) {
+  data.value = event;
+  // data.value.evidenceFile = data.value.evidenceFile ? JSON.parse(data.value.evidenceFile) : [];
+
+  formRef.value?.resetFields();
+  formData.id = data.value.id;
+  formData.parkingNumber = event.parkingNumber;
+  showDialog.value = true;
+  getDistrict();
+}
+
+function submit(event) {
+  formData.operateType = event ? 1 : 0;
+  if (event) {
+    formRef.value.validate((valid) => {
+      if (valid) {
+        request.edit(entrust, formData, "release").then((res) => {
+          if (res.code == 1) {
+            showDialog.value = false;
+          }
+        });
+      }
+    });
+  } else {
+    request.edit(entrust, formData, "release").then((res) => {
+      if (res.code == 1) {
+        showDialog.value = false;
+      }
+    });
+  }
+}
+
+let activeTab = ref("first");
+
+let formRef = ref();
+
+let formData = reactive({
+  id: "",//委托单id
+  operateType: 1,
+  districtId: "",
+  communityName: "",
+  buildingNumber: "",
+  parkingNumber: "",
+  parkingUrl: "",//车位展示图片
+  pictureUrl: "",//车位展示图片
+  parkingShow: "<p><br></p>"//车位简介
+});
+
+let formRules = {
+  districtId: [
+    { required: true, message: "不能为空" }
+  ],
+  communityName: [
+    { required: true, message: "不能为空" }
+  ],
+  buildingNumber: [
+    { required: true, message: "不能为空" }
+  ],
+  parkingNumber: [
+    { required: true, message: "不能为空" }
+  ]
+};
+
+
+//区县列表
+let districtList = ref([]);
+
+function getDistrict() {
+  request.index(district_list, {}, "").then((res) => {
+    if (res.code == 1) {
+      districtList.value = res.data;
+    }
+  });
+}
+
+//小区列表
+let communityList = ref([]);
+
+//选择区县,获取小区列表
+function getCommunity(event) {
+  if (!event) return;
+  formData.communityName = "";
+
+  request.index(community_list, {
+    districtIds: formData.districtId
+  }, "").then((res) => {
+
+    if (res.code == 1) {
+      communityList.value = res.data;
+    }
+  });
+}
+
+//楼号列表
+let buildingList = ref([]);
+
+//选择小区,获取楼号列表
+function getBuilding(event) {
+  if (!event) return;
+  // if (!buildingNumberCustom.value) {
+    let communityId = "";
+    for (let r of communityList.value) {
+      if (r.communityName = formData.communityName) {
+        communityId = r.id;
+        break;
+      }
+    }
+    request.index(building_list, {
+      communityIds: communityId
+    }, "").then((res) => {
+      if (res.code == 1) {
+        buildingList.value = res.data;
+      }
+    });
+  // }
+
+
+}
+
+
+const emit = defineEmits(["close"]);
+
+function closeDialog() {
+  emit("close");
+}
+
+</script>
+
+<style scoped>
+
+</style>

+ 156 - 0
src/views/backend/enterprise/members/askbuy/index.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="default-main ">
+    <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
+              show-icon />
+    <el-row>
+      <el-col :span="24">
+
+        <!-- 表格顶部菜单 -->
+        <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
+                     quick-search-placeholder="通过标题模糊搜索"
+                     @action="baTable.onTableHeaderAction" />
+        <!-- 表格 -->
+        <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
+        <Table @action="baTable.onTableAction" />
+
+      </el-col>
+    </el-row>
+
+    <!-- 表单 -->
+    <auditDialog ref="auditDialogRef" @close="baTable.getIndex()"></auditDialog>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted, provide } from "vue";
+import { entrust } from "/@/api/controllerUrls";
+import Table from "/@/components/table/index.vue";
+import TableHeader from "/@/components/table/header/index.vue";
+import { defaultOptButtons } from "/@/components/table";
+import { baTableApi } from "/@/api/common";
+import baTableClass from "/@/utils/baTable";
+import useCurrentInstance from "/@/utils/useCurrentInstance";
+import _ from "lodash";
+import auditDialog from "./auditDialog.vue";
+import { ElMessage } from "element-plus";
+
+//注销按钮
+let cancelBtn: OptButton[] = [
+  {
+    render: "tipButton",
+    name: "audit",
+    title: "审核",
+    text: "审核",
+    type: "primary",
+    icon: '',
+    class: "",
+    disabledTip: false
+  }
+];
+
+let btn = defaultOptButtons([]);
+btn = btn.concat(cancelBtn);
+
+
+const baTable = new baTableClass(
+  new baTableApi(entrust),
+  {
+    dblClickNotEditColumn: [undefined, "status"],
+    column: [
+      { type: "selection", align: "center", operator: false },
+      { label: "头像", prop: "headPortrait", align: "center", render: "image", operator: false },
+      { label: "委托人", prop: "memberName", align: "left", operator: "LIKE" },
+      { label: "所在区县", prop: "districtName", align: "center", operator: "LIKE" },
+      { label: "所在小区", prop: "communityName", align: "center", operator: "LIKE" },
+      { label: "楼号", prop: "buildingNumber", align: "center", operator: "LIKE" },
+      { label: "车位号码", prop: "parkingNumber", align: "center", operator: "LIKE" },
+      {
+        label: "委托类型",
+        prop: "entrustType",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "租售", 1: "出租", 3: "出售" }
+      },
+      {
+        label: "委托状态",
+        prop: "entrustStatus",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        custom: { 0: "", 1: "info" },
+        replaceValue: { 0: "委托中", 1: "已撤销" }
+      },
+      {
+        label: "审核状态",
+        prop: "releaseStatus",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        custom: { 0: "", 1: "success", 3: "info" },
+        replaceValue: { 0: "待审核", 1: "审核通过", 3: "审核驳回" }
+      },
+      { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
+      {
+        label: "操作",
+        align: "center",
+        width: "80",
+        render: "buttons",
+        buttons: btn,
+        operator: false
+      }
+    ]
+  },
+  {
+    defaultItems: {}
+  },
+  {
+    // 获得编辑数据后
+    requestEdit: () => {
+      if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = "el-icon-Minus";
+    }
+  }
+);
+
+provide("baTable", baTable);
+
+onMounted(() => {
+  baTable.mount();
+  baTable.getIndex();
+
+  const { proxy } = useCurrentInstance();
+  /**
+   * 表格内的按钮响应
+   * @param name 按钮name
+   * @param row 被操作行数据
+   */
+  proxy.eventBus.on("onTableButtonClick", (data: { name: string; row: TableRow }) => {
+    if (!baTable.activate) return;
+    if (data.name == "audit") {
+      infoButtonClick(data.row);
+    }
+  });
+});
+
+let auditDialogRef = ref();
+
+/** 点击按钮事件 */
+const infoButtonClick = (row: TableRow) => {
+  if (!row) {
+    return;
+  } else if (row.entrustStatus == 1) {
+    ElMessage({ type: "warning", message: "用户已取消委托" });
+    return;
+  } else if (row.releaseStatus !== 0) {
+    ElMessage({ type: "error", message: "该委托已审核" ,grouping:true});
+    return;
+  }
+// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
+  let rowClone = _.cloneDeep(row);
+
+  auditDialogRef.value.open(rowClone);
+};
+</script>
+
+
+<style scoped lang="scss"></style>

+ 32 - 51
src/views/backend/enterprise/members/entrust/index.vue

@@ -11,7 +11,17 @@
                      @action="baTable.onTableHeaderAction" />
         <!-- 表格 -->
         <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-        <Table @action="baTable.onTableAction" />
+        <Table @action="baTable.onTableAction">
+          <template #end>
+            <el-table-column label="操作">
+              <template #default="{row}" >
+                <el-button size="small" type="primary" :disabled="row.entrustStatus == 1||row.releaseStatus !== 0" v-if=" auth('audit')"
+                           @click="tableButtonClick(row)">审核
+                </el-button>
+              </template>
+            </el-table-column>
+          </template>
+        </Table>
 
       </el-col>
     </el-row>
@@ -26,30 +36,13 @@ import { ref, onMounted, provide } from "vue";
 import { entrust } from "/@/api/controllerUrls";
 import Table from "/@/components/table/index.vue";
 import TableHeader from "/@/components/table/header/index.vue";
-import { defaultOptButtons } from "/@/components/table";
 import { baTableApi } from "/@/api/common";
 import baTableClass from "/@/utils/baTable";
 import useCurrentInstance from "/@/utils/useCurrentInstance";
 import _ from "lodash";
 import auditDialog from "./auditDialog.vue";
 import { ElMessage } from "element-plus";
-
-//注销按钮
-let cancelBtn: OptButton[] = [
-  {
-    render: "tipButton",
-    name: "audit",
-    title: "审核",
-    text: "审核",
-    type: "primary",
-    icon: '',
-    class: "",
-    disabledTip: false
-  }
-];
-
-let btn = defaultOptButtons([]);
-btn = btn.concat(cancelBtn);
+import { auth } from "/@/utils/common";
 
 
 const baTable = new baTableClass(
@@ -90,15 +83,15 @@ const baTable = new baTableClass(
         custom: { 0: "", 1: "success", 3: "info" },
         replaceValue: { 0: "待审核", 1: "审核通过", 3: "审核驳回" }
       },
-      { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
-      {
-        label: "操作",
-        align: "center",
-        width: "80",
-        render: "buttons",
-        buttons: btn,
-        operator: false
-      }
+      { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false }
+      // {
+      //   label: "操作",
+      //   align: "center",
+      //   width: "80",
+      //   render: "buttons",
+      //   buttons: btn,
+      //   operator: false
+      // }
     ]
   },
   {
@@ -118,34 +111,22 @@ onMounted(() => {
   baTable.mount();
   baTable.getIndex();
 
-  const { proxy } = useCurrentInstance();
-  /**
-   * 表格内的按钮响应
-   * @param name 按钮name
-   * @param row 被操作行数据
-   */
-  proxy.eventBus.on("onTableButtonClick", (data: { name: string; row: TableRow }) => {
-    if (!baTable.activate) return;
-    if (data.name == "audit") {
-      infoButtonClick(data.row);
-    }
-  });
 });
 
 let auditDialogRef = ref();
 
 /** 点击按钮事件 */
-const infoButtonClick = (row: TableRow) => {
-  if (!row) {
-    return;
-  } else if (row.entrustStatus == 1) {
-    ElMessage({ type: "warning", message: "用户已取消委托" });
-    return;
-  } else if (row.releaseStatus !== 0) {
-    ElMessage({ type: "error", message: "该委托已审核" ,grouping:true});
-    return;
-  }
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
+const tableButtonClick = (row: TableRow) => {
+  // if (!row) {
+  //   return;
+  // } else if (row.entrustStatus == 1) {
+  //   ElMessage({ type: "warning", message: "用户已取消委托" });
+  //   return;
+  // } else if (row.releaseStatus !== 0) {
+  //   ElMessage({ type: "error", message: "该委托已审核", grouping: true });
+  //   return;
+  // }
+  // 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
   let rowClone = _.cloneDeep(row);
 
   auditDialogRef.value.open(rowClone);

+ 9 - 8
src/views/backend/enterprise/project/map/index.vue

@@ -11,7 +11,8 @@
                              @action="baTable.onTableHeaderAction"/>
                 <!-- 表格 -->
                 <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
+              <Table @action="baTable.onTableAction">
+              </Table>
 
             </el-col>
         </el-row>
@@ -66,13 +67,13 @@ const baTable = new newBaTable(
     {
         dblClickNotEditColumn: [undefined, 'status'],
         column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '所在区县', prop: 'districtName', align: 'left',"min-width":"150", operator: 'LIKE'},
-            {label: '小区名称', prop: 'communityName', align: 'left',"min-width":"150", operator: 'LIKE'},
-            {label: '地图名称', prop: 'mapName', align: 'left',"min-width":"150", operator: 'LIKE'},
-            {label: '关联楼号', prop: 'buildingName', align: 'left',"min-width":"150", operator: "LIKE"},
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '180', operator: false},
+            {type: "selection", align: "center", operator: false },
+          { label: "所在区县", prop: "districtName", align: "left", "min-width": "150", operator: "LIKE" },
+          { label: "小区名称", prop: "communityName", align: "left", "min-width": "150", operator: "LIKE" },
+          { label: "地图名称", prop: "mapName", align: "left", "min-width": "150", operator: "LIKE" },
+          { label: "关联楼号", prop: "buildingName", align: "left", "min-width": "150", operator: "LIKE" },
+          { label: "创建人", prop: "creatorName", align: "center", width: "120", operator: false },
+          { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
             {
                 label: '操作',
                 align: 'center',