xiaodai2017 2 yıl önce
ebeveyn
işleme
68c3786c9e

+ 1 - 6
src/views/mobile/exchangeOrder/config/content.config.ts

@@ -4,11 +4,6 @@ import { renderStatus, renderImage } from "/@/utils/column-helper";
 import { ORDER_OPTIONS } from "/@/config/status";
 
 const columns = [
-  {
-    type: "selection",
-    width: 55,
-    hide: ({ checkList }) => !checkList.includes("勾选列")
-  },
   {
     prop: "orderCode",
     label: "订单编号",
@@ -96,7 +91,7 @@ const columns = [
   {
     label: "操作",
     fixed: "right",
-    width: 120,
+    width: 40,
     slot: "operation"
   }
 ];

+ 35 - 30
src/views/mobile/exchangeOrder/index.vue

@@ -3,7 +3,6 @@ import { ref } from "vue";
 import { PageSearch, usePageSearch } from "/@/components/PageSearch";
 import searchConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
-import PageAuth from "/@/components/PageAuth";
 import { PageModal, usePageModal } from "/@/components/PageModal";
 import modalConfig from "./config/modal.config";
 import { PageContent } from "/@/components/PageContent";
@@ -11,10 +10,12 @@ import { exportPageContent } from "/@/utils/export";
 import ExeclUpload from "./cpns/execl-files-upload/index.vue";
 import { httpDetail } from "/@/api/mobile/exchangeOrder";
 import { useResponseHandle } from "/@/hooks/useAsync";
-const pageName = "order";
+import { usePermission } from "/@/hooks/usePermission";
+const pageName = "exchangeOrder";
 const responseHandle = useResponseHandle();
 const { pageContentRef, handleResetClick, handleSearchClick, getMergeParams } =
   usePageSearch(undefined, undefined, searchConfig);
+const { hasPermissionWithCode, permissions } = usePermission(pageName);
 
 const { pageModalRef, handlePreviewData, handleConfrim, defaultInfo } =
   usePageModal({
@@ -45,33 +46,37 @@ function getParams() {
 </script>
 
 <template>
-  <!-- <PageAuth :pageName="pageName"> -->
-  <PageSearch
-    :form-config="searchConfig"
-    @search-btn-click="handleSearchClick"
-    @reset-btn-click="handleResetClick"
-  >
-    <template #action>
-      <!-- v-if="!isSuperUser" @click="onDownloadTemplate" -->
-      <el-button @click="getParams">导出订单</el-button>
-      <!-- v-if="!isSuperUser" -->
+  <PageAuth :pageName="pageName">
+    <PageSearch
+      :form-config="searchConfig"
+      @search-btn-click="handleSearchClick"
+      @reset-btn-click="handleResetClick"
+    >
+      <template #action>
+        <el-button v-if="hasPermissionWithCode('019')" @click="getParams"
+          >导出订单</el-button
+        >
 
-      <el-button type="primary" @click="() => execlUploadRef.onDisplay()"
-        >批量发货
-      </el-button>
-    </template>
-  </PageSearch>
-  <PageContent
-    ref="pageContentRef"
-    :content-config="contentConfig"
-    @preview-btn-click="({ id }) => handleDetailData(id)"
-  />
-  <ExeclUpload ref="execlUploadRef" @onSuccess="handleResetClick" />
-  <PageModal
-    ref="pageModalRef"
-    :modal-config="modalConfig"
-    :default-info="defaultInfo"
-    @confirm-btn-click="handleConfrim"
-  />
-  <!-- </PageAuth> -->
+        <el-button
+          v-if="hasPermissionWithCode('017')"
+          type="primary"
+          @click="() => execlUploadRef.onDisplay()"
+          >批量发货
+        </el-button>
+      </template>
+    </PageSearch>
+    <PageContent
+      ref="pageContentRef"
+      :powers="permissions"
+      :content-config="contentConfig"
+      @preview-btn-click="({ id }) => handleDetailData(id)"
+    />
+    <ExeclUpload ref="execlUploadRef" @onSuccess="handleResetClick" />
+    <PageModal
+      ref="pageModalRef"
+      :modal-config="modalConfig"
+      :default-info="defaultInfo"
+      @confirm-btn-click="handleConfrim"
+    />
+  </PageAuth>
 </template>

+ 195 - 0
src/views/mobile/exchangeStock/components/add-dialog.vue

@@ -0,0 +1,195 @@
+<script setup lang="ts">
+import { FormRules, ElForm, ElMessage } from "element-plus";
+import { reactive, ref } from "vue";
+import { httpUpdate, httpDetail } from "/@/api/mobile/exchangeStock";
+import { responseHandle } from "/@/utils/responseHandle";
+import { useNav } from "/@/layout/hooks/useNav";
+import { FLAG_OPTIONS } from "/@/config/status";
+import OrderDialog from "/@/components/PageListModal";
+import LadderTable from "./components/ladder-table.vue";
+import LadderModal from "./components/ladder-modal.vue";
+enum FROM_TYPE {
+  create = "create",
+  edit = "edit",
+  view = "view"
+}
+const { logout } = useNav();
+const showModel = ref(false);
+const TYPE = ref<FROM_TYPE>(FROM_TYPE.create);
+const ladderModalRef = ref<InstanceType<typeof LadderModal>>(null);
+
+const formRef = ref<InstanceType<typeof ElForm>>(null);
+const modelOrderRef = ref<InstanceType<typeof OrderDialog>>(null);
+const loading = ref(false);
+const titleType = ref("");
+const inventory = ref(0);
+const id = ref("");
+const emit = defineEmits(["reload"]);
+const initform = {
+  group_id: "",
+  list: []
+};
+const ruleForm = ref({ ...initform });
+const rules = reactive<FormRules>({
+  group_id: [
+    { required: true, trigger: "change", message: "请选择公司卡类型!" }
+  ],
+  list: [
+    { required: true, type: "array", trigger: "change", message: "选择商品!" }
+  ]
+});
+
+const initData = async () => {
+  const { code, data, message } = await httpDetail({ id: id.value });
+  responseHandle({
+    code,
+    message,
+    logout,
+    handler: () => {
+      Object.keys(ruleForm.value).forEach(key => {
+        if (key === "flag") {
+          ruleForm.value[key] = "1";
+        } else {
+          ruleForm.value[key] = data[key] ? data[key] + "" : "";
+        }
+      });
+      inventory.value = Number(data.inventory);
+    }
+  });
+};
+function modularShow() {
+  if (!ruleForm.value.group_id) return ElMessage.warning("请选择公司卡类型!");
+  modelOrderRef.value.show(ruleForm.value.group_id, "1");
+}
+async function show(node: any, did: string, isCreate: string) {
+  id.value = did;
+  loading.value = true;
+  Object.keys(ruleForm.value).forEach(key => {
+    ruleForm.value[key] = initform[key];
+  });
+  TYPE.value = isCreate;
+  switch (TYPE.value) {
+    case "create":
+      titleType.value = "新建兑换商品库存";
+      break;
+    case "edit":
+      titleType.value = "编辑兑换商品库存";
+      break;
+    case "view":
+      titleType.value = "兑换商品库存详情";
+      break;
+    default:
+      titleType.value = "新建兑换商品库存";
+  }
+
+  showModel.value = true;
+  if (TYPE.value !== "create") {
+    await initData();
+  }
+  loading.value = false;
+}
+function handleUpdate() {
+  const data = {
+    ...ruleForm.value
+  };
+
+  return {
+    data,
+    api: httpUpdate
+  };
+}
+
+function handleSave() {
+  formRef.value.validate(async vaild => {
+    if (vaild) {
+      if (loading.value) return;
+      loading.value = true;
+      const handler = handleUpdate;
+      const { api, data } = handler();
+      const { message, code } = await api(data);
+      loading.value = false;
+      responseHandle({
+        code,
+        message,
+        logout,
+        handler: () => {
+          showModel.value = false;
+          emit("reload");
+        }
+      });
+    }
+  });
+}
+defineExpose({
+  show
+});
+</script>
+
+<template>
+  <el-dialog
+    v-model="showModel"
+    :close-on-press-escape="false"
+    center
+    append-to-body
+    destroy-on-close
+    :width="'1040px'"
+    :title="titleType"
+    v-loading="loading"
+  >
+    <el-form
+      ref="formRef"
+      :model="ruleForm"
+      :rules="rules"
+      label-width="100px"
+      style="margin-top: -10px"
+      class="demo-ruleForm"
+      status-icon
+    >
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="公司卡类型" prop="group_id">
+            <el-select
+              v-model="ruleForm.group_id"
+              placeholder="变动状态"
+              :disabled="TYPE === 'view'"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="(item, index) in FLAG_OPTIONS"
+                :label="item.label"
+                :value="item.id"
+                :key="item.id + index"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="商品信息" prop="list">
+            <LadderTable
+              :readonly="false"
+              :ladder="ruleForm.list"
+              @choose="() => modularShow()"
+              @update="
+                ({ data, index }) => ladderModalRef.onDisplay(data, index)
+              "
+              @delete="index => ruleForm.list.splice(index, 1)"
+            />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8" class="flex justify-end">
+          <el-button
+            v-if="TYPE !== 'view'"
+            :loading="loading"
+            :disabled="loading"
+            type="primary"
+            @click="handleSave"
+            >保存</el-button
+          >
+          <el-button @click="showModel = false">取消</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+  </el-dialog>
+  <OrderDialog ref="modelOrderRef" @save-btn-click="handleAddOrder" />
+</template>

+ 194 - 0
src/views/mobile/exchangeStock/components/edit-dialog.vue

@@ -0,0 +1,194 @@
+<script setup lang="ts">
+import { FormRules, ElForm, ElMessage } from "element-plus";
+import { reactive, ref } from "vue";
+import { httpUpdate, httpDetail } from "/@/api/mobile/exchangeStock";
+import { responseHandle } from "/@/utils/responseHandle";
+import { useNav } from "/@/layout/hooks/useNav";
+import { FLAG_OPTIONS } from "/@/config/status";
+enum FROM_TYPE {
+  create = "create",
+  edit = "edit",
+  view = "view"
+}
+const { logout } = useNav();
+const showModel = ref(false);
+const TYPE = ref<FROM_TYPE>(FROM_TYPE.create);
+const formRef = ref<InstanceType<typeof ElForm>>(null);
+const loading = ref(false);
+const titleType = ref("");
+const inventory = ref(0);
+const id = ref("");
+const emit = defineEmits(["reload"]);
+const initform = {
+  id: "",
+  number: 1,
+  flag: "1"
+};
+const ruleForm = ref({ ...initform });
+const rules = reactive<FormRules>({
+  number: [{ required: true, trigger: "change", message: "请选择变动数!" }],
+  flag: [{ required: true, trigger: "change", message: "选择变动类型" }]
+});
+
+const initData = async () => {
+  const { code, data, message } = await httpDetail({ id: id.value });
+  responseHandle({
+    code,
+    message,
+    logout,
+    handler: () => {
+      Object.keys(ruleForm.value).forEach(key => {
+        if (key === "flag") {
+          ruleForm.value[key] = "1";
+        } else {
+          ruleForm.value[key] = data[key] ? data[key] + "" : "";
+        }
+      });
+      inventory.value = Number(data.inventory);
+    }
+  });
+};
+async function show(node: any, did: string, isCreate: string) {
+  id.value = did;
+  loading.value = true;
+  Object.keys(ruleForm.value).forEach(key => {
+    ruleForm.value[key] = initform[key];
+  });
+  TYPE.value = isCreate;
+  switch (TYPE.value) {
+    case "create":
+      titleType.value = "新建兑换商品库存";
+      break;
+    case "edit":
+      titleType.value = "编辑兑换商品库存";
+      break;
+    case "view":
+      titleType.value = "兑换商品库存详情";
+      break;
+    default:
+      titleType.value = "新建兑换商品库存";
+  }
+
+  showModel.value = true;
+  if (TYPE.value !== "create") {
+    await initData();
+  }
+  loading.value = false;
+}
+function handleUpdate() {
+  const data = {
+    ...ruleForm.value
+  };
+
+  return {
+    data,
+    api: httpUpdate
+  };
+}
+
+function handleSave() {
+  formRef.value.validate(async vaild => {
+    if (vaild) {
+      if (loading.value) return;
+      loading.value = true;
+      const handler = handleUpdate;
+      const { api, data } = handler();
+      const { flag, number } = data;
+      if (flag === "-1") {
+        if (Number(number) > Number(inventory.value)) {
+          ElMessage.warning(
+            `减少库存操作时,变动库存不能大于当前库存${inventory.value}!`
+          );
+          loading.value = false;
+          return;
+        }
+      }
+      const { message, code } = await api(data);
+      loading.value = false;
+      responseHandle({
+        code,
+        message,
+        logout,
+        handler: () => {
+          showModel.value = false;
+          emit("reload");
+        }
+      });
+    }
+  });
+}
+defineExpose({
+  show
+});
+</script>
+
+<template>
+  <el-dialog
+    v-model="showModel"
+    :close-on-press-escape="false"
+    center
+    append-to-body
+    destroy-on-close
+    :width="'1040px'"
+    :title="titleType"
+    v-loading="loading"
+  >
+    <el-form
+      ref="formRef"
+      :model="ruleForm"
+      :rules="rules"
+      label-width="100px"
+      style="margin-top: -10px"
+      class="demo-ruleForm"
+      status-icon
+    >
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="变动状态" prop="flag">
+            <el-select
+              v-model="ruleForm.flag"
+              placeholder="变动状态"
+              :disabled="TYPE === 'view'"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="(item, index) in FLAG_OPTIONS"
+                :label="item.label"
+                :value="item.id"
+                :key="item.id + index"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="变动数量" prop="number">
+            <el-input-number
+              v-model="ruleForm.number"
+              :step="1"
+              :min="1"
+              :disabled="TYPE === 'view'"
+              :precision="0"
+              style="width: 100%"
+              :max="99999999"
+              value-on-clear="min"
+              controls-position="right"
+              step-strictly
+            />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8" class="flex justify-end">
+          <el-button
+            v-if="TYPE !== 'view'"
+            :loading="loading"
+            :disabled="loading"
+            type="primary"
+            @click="handleSave"
+            >保存</el-button
+          >
+          <el-button @click="showModel = false">取消</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+  </el-dialog>
+</template>

+ 0 - 0
src/views/mobile/exchangeStock/cpns/ladder-table.vue → src/views/mobile/exchangeStock/components/ladder-table.vue


+ 0 - 177
src/views/mobile/exchangeStock/cpns/addModel.vue

@@ -1,177 +0,0 @@
-<script setup lang="ts">
-import { computed, ref, watchEffect, reactive, unref } from "vue";
-import { ActionType } from "/@/components/PageContent";
-import { createBasicTitle } from "./utils/create-basic-title";
-import BasicDescriptions from "/@/components/BasicDescriptions";
-import { ElForm, ElMessage } from "element-plus";
-import type { FormInstance, FormRules } from "element-plus";
-import { projectFormRules } from "../config/_rules";
-import { FLAG_OPTIONS } from "/@/config/status";
-import { useNav } from "/@/layout/hooks/useNav";
-import { bargainColumns } from "../config/_details";
-const { logout } = useNav();
-import { httpAdd, httpDetail, httpUpdate } from "/@/api/mobile/exchangeStock";
-const emit = defineEmits(["submitOk"]);
-const ruleFormRef = ref<FormInstance>();
-const form = {
-  id: "",
-  number: 1,
-  flag: "1"
-};
-const ruleForm = reactive({ ...form });
-const type = ref<ActionType>("preview");
-const dialogVisible = ref(false);
-const confirmLoading = ref(false);
-const title = ref("");
-const uID = ref("");
-const bargain = ref({});
-
-const submitForm = async (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  await formEl.validate(async (valid, fields) => {
-    if (valid) {
-      if (confirmLoading.value) return;
-      confirmLoading.value = true;
-      const model = unref(ruleForm);
-      const { flag, number } = model;
-      const { inventory } = bargain;
-      if (flag === "-1") {
-        if (Number(number) > Number(inventory)) {
-          ElMessage.warning("减少库存操作时,变动库存不能大于当前库存!");
-          return;
-        }
-      }
-      let res = {};
-      if (type.value == "create") {
-        delete model["id"];
-        res = await httpAdd(model);
-      } else {
-        res = await httpUpdate(model);
-      }
-      const { code: hcode, data, message } = res;
-      confirmLoading.value = false;
-      if (hcode === 0) {
-        dialogVisible.value = false;
-        emit("submitOk", {});
-      } else if (hcode >= 100 && hcode <= 104) {
-        logout();
-      } else {
-        ElMessage.warning(message);
-      }
-    } else {
-      console.log("error submit!", fields);
-    }
-    handleAddOrder;
-  });
-};
-
-function handleAddOrder(list) {
-  console.log(list);
-}
-const initData = async () => {
-  if (confirmLoading.value) return;
-  confirmLoading.value = true;
-  const { code, data, message } = await httpDetail({ id: uID.value });
-  if (code === 0) {
-    bargain.value = data;
-    const { id } = data;
-    ruleForm.id = id;
-  } else if (code >= 100 && code <= 104) {
-    logout();
-  } else {
-    ElMessage.warning(message);
-  }
-  confirmLoading.value = false;
-};
-defineExpose({
-  onShow: async (basicTitle: string, readonly: ActionType, id: string) => {
-    dialogVisible.value = true;
-    type.value = readonly;
-    const readTitle = createBasicTitle(type.value);
-    title.value =
-      readonly == "preview" ? basicTitle + readTitle : readTitle + basicTitle;
-    Object.keys(ruleForm).forEach(key => {
-      ruleForm[key] = form[key];
-    });
-
-    confirmLoading.value = false;
-    uID.value = id;
-    bargain.value = {};
-    if (type.value !== "create") {
-      await initData();
-    }
-  }
-});
-</script>
-
-<template>
-  <el-dialog
-    :title="title"
-    v-model="dialogVisible"
-    center
-    top="5vh"
-    destroy-on-close
-    width="1024px"
-  >
-    <BasicDescriptions
-      labelWidth="120"
-      v-if="bargain && bargain?.id"
-      :columns="bargainColumns"
-      :data="bargain"
-    />
-    <el-form
-      ref="ruleFormRef"
-      v-loading="confirmLoading"
-      :model="ruleForm"
-      v-if="type !== 'preview'"
-      :rules="projectFormRules"
-      label-width="100px"
-      :disabled="type === 'preview'"
-      status-icon
-    >
-      <el-row style="padding: 20px 0 0 0">
-        <el-col :span="8">
-          <el-form-item label="变动状态" prop="flag">
-            <el-select
-              v-model="ruleForm.flag"
-              placeholder="变动状态"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="(item, index) in FLAG_OPTIONS"
-                :label="item.label"
-                :value="item.id"
-                :key="item.id + index"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="变动数量" prop="number">
-            <el-input-number
-              v-model="ruleForm.number"
-              :step="1"
-              :min="1"
-              :precision="0"
-              style="width: 100%"
-              :max="99999999"
-              value-on-clear="min"
-              controls-position="right"
-              step-strictly
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item>
-            <div class="w-full flex justify-end">
-              <el-button type="primary" @click="submitForm(ruleFormRef)"
-                >提交</el-button
-              >
-              <ElButton @click="() => (dialogVisible = false)">取消</ElButton>
-            </div>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-  </el-dialog>
-</template>

+ 0 - 11
src/views/mobile/exchangeStock/cpns/utils/create-basic-title.ts

@@ -1,11 +0,0 @@
-import { ActionType } from "/@/components/PageContent";
-
-const mapActionToBasicTitle = {
-  update: "编辑",
-  create: "新增",
-  preview: "详情"
-};
-
-export function createBasicTitle(type: ActionType) {
-  return mapActionToBasicTitle[type];
-}

+ 0 - 27
src/views/mobile/exchangeStock/cpns/utils/types.ts

@@ -1,27 +0,0 @@
-import { ActionType } from "/@/components/PageContent";
-import pageModal from "../addModel.vue";
-
-export type PageModalInstance = typeof pageModal & {
-  dialogVisible: boolean;
-  confirmLoading: boolean;
-  type: ActionType;
-  title: String;
-};
-export const modalProps = {
-  dialogVisible: {
-    type: Boolean,
-    required: Boolean
-  },
-  confirmLoading: {
-    type: Boolean,
-    default: false
-  },
-  type: {
-    type: Object as PropType<ActionType>,
-    required: true
-  },
-  title: {
-    type: String,
-    required: true
-  }
-};

+ 76 - 59
src/views/mobile/exchangeStock/index.vue

@@ -1,9 +1,11 @@
 <script setup lang="ts">
-import { ref, unref } from "vue";
+import { ref } from "vue";
+import { usePermission } from "/@/hooks/usePermission";
+import EditModel from "./components/edit-dialog.vue";
 import { PageSearch, usePageSearch } from "/@/components/PageSearch";
 import searchConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
-// import PageAuth from "/@/components/PageAuth";
+
 import { PageModal, usePageModal } from "/@/components/PageModalShell";
 import modalConfig from "./config/modal.config";
 import { PageContent } from "/@/components/PageContent";
@@ -17,17 +19,18 @@ import {
   createDefaultData
 } from "/@/components/BasicForm";
 
-import addModel from "./cpns/addModel.vue";
+import addModel from "./components/addModel.vue";
 import { useResponseHandle } from "/@/hooks/useAsync";
-import LadderModal from "./cpns/ladder-modal.vue";
-import LadderTable from "./cpns/ladder-table.vue";
+import LadderTable from "./components/ladder-table.vue";
 import { ComCard } from "/@/components/RemoteSelect";
 import OrderDialog from "/@/components/PageListModal";
 import { ElForm, ElMessage } from "element-plus";
 import ListModal from "/@/components/ListModal";
+const pageName = "exchangeStock";
+const { hasPermissionWithCode, permissions } = usePermission(pageName);
+const modelRef = ref<InstanceType<typeof EditModel>>(null);
 const responseHandle = useResponseHandle();
-const ladderModalRef = ref<InstanceType<typeof LadderModal>>(null);
-const modelRef = ref<InstanceType<typeof OrderDialog>>(null);
+const modelOrderRef = ref<InstanceType<typeof OrderDialog>>(null);
 const actionModalRef = ref<InstanceType<typeof addModel>>(null);
 const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch(
   undefined,
@@ -79,7 +82,7 @@ async function handleDetailData(id, type) {
 }
 function modularShow() {
   if (!formData.value.group_id) return ElMessage.warning("请选择公司卡类型!");
-  modelRef.value.show(formData.value.group_id, "1");
+  modelOrderRef.value.show(formData.value.group_id, "1");
 }
 function handleAddOrder(list) {
   console.log(list);
@@ -103,61 +106,75 @@ function aa(id) {
   console.log(id);
   ListModalRef.value.show(id);
 }
+function handleAddChangeCheck(item: any, id: string, type: string) {
+  modelRef.value.show(item, id, type);
+}
 </script>
 
 <template>
-  <!-- <PageAuth :pageName="pageName"> -->
-  <PageSearch
-    :form-config="searchConfig"
-    @search-btn-click="handleSearchClick"
-    @reset-btn-click="handleResetClick"
-  />
-  <PageContent
-    ref="pageContentRef"
-    :content-config="contentConfig"
-    @create-btn-click="handleCreateData"
-    @preview-btn-click="({ id }) => handleDetailData(id, 'preview')"
-    @update-btn-click="({ id }) => handleDetailData(id, 'update')"
-    @log-btn-click="({ id }) => aa(id)"
-  />
-
-  <PageModal
-    ref="pageModalRef"
-    :modal-config="modalConfig"
-    :default-info="defaultInfo"
-    @confirm-btn-click="handleConfrim"
-  >
-    <BasicForm
-      ref="basicFormRef"
-      v-bind="projectFormConfig"
-      :form-data="formData"
-      :rules="projectFormRules"
-      :disabled="false"
-      label-width="120px"
+  <PageAuth :pageName="pageName">
+    <PageSearch
+      :form-config="searchConfig"
+      @search-btn-click="handleSearchClick"
+      @reset-btn-click="handleResetClick"
     >
-      <template #group_id>
-        <ComCard v-model="formData.group_id" placeholder="公司卡类型" />
+      <template #action>
+        <el-button
+          type="primary"
+          @click="handleAddChangeCheck({}, '', 'create')"
+          v-if="hasPermissionWithCode('002')"
+        >
+          新增
+        </el-button>
       </template>
+    </PageSearch>
+    <PageContent
+      ref="pageContentRef"
+      :powers="permissions"
+      :content-config="contentConfig"
+      @preview-btn-click="row => handleAddChangeCheck(row, row.id, 'view')"
+      @update-btn-click="row => handleAddChangeCheck(row, row.id, 'edit')"
+      @log-btn-click="({ id }) => aa(id)"
+    />
 
-      <template #list>
-        <LadderTable
-          :readonly="false"
-          :ladder="formData.list"
-          @choose="() => modularShow()"
-          @update="({ data, index }) => ladderModalRef.onDisplay(data, index)"
-          @delete="index => formData.list.splice(index, 1)"
-        />
-      </template>
-      <template #footer>
-        <div class="w-full flex justify-end">
-          <ElButton type="primary" @click="handleCreate">保存</ElButton>
-        </div>
-      </template>
-    </BasicForm>
-  </PageModal>
-
-  <OrderDialog ref="modelRef" @save-btn-click="handleAddOrder" />
-  <addModel ref="actionModalRef" @submitOk="Create" />
-  <ListModal ref="ListModalRef" :modalConfig="ListModalConfig" />
-  <!-- </PageAuth> -->
+    <PageModal
+      ref="pageModalRef"
+      :modal-config="modalConfig"
+      :default-info="defaultInfo"
+      @confirm-btn-click="handleConfrim"
+    >
+      <BasicForm
+        ref="basicFormRef"
+        v-bind="projectFormConfig"
+        :form-data="formData"
+        :rules="projectFormRules"
+        :disabled="false"
+        label-width="120px"
+      >
+        <template #group_id>
+          <ComCard v-model="formData.group_id" placeholder="公司卡类型" />
+        </template>
+        <!-- //ladderModalRef.onDisplay(data, -->
+        <!-- index)"  =>formData.list.splice(index, 1)" -->
+        <template #list>
+          <LadderTable
+            :readonly="false"
+            :ladder="formData.list"
+            @choose="() => modularShow()"
+            @update="({ data, index }) => formData.list.splice(index, 1)"
+            @delete="index => formData.list.splice(index, 1)"
+          />
+        </template>
+        <template #footer>
+          <div class="w-full flex justify-end">
+            <ElButton type="primary" @click="handleCreate">保存</ElButton>
+          </div>
+        </template>
+      </BasicForm>
+    </PageModal>
+    <EditModel ref="modelRef" @reload="pageContentRef.onSearch()" />
+    <OrderDialog ref="modelOrderRef" @save-btn-click="handleAddOrder" />
+    <!-- <addModel ref="actionModalRef" @submitOk="Create" /> -->
+    <ListModal ref="ListModalRef" :modalConfig="ListModalConfig" />
+  </PageAuth>
 </template>

+ 1 - 1
src/views/mobile/user/index.vue

@@ -20,7 +20,7 @@ function handleAddChangeCheck(item: any, id: string, type: string) {
   modelRef.value.show(item, id, type);
 }
 const resetPwdRef = ref<InstanceType<typeof ResetPwd>>(null);
-const { hasPermissionWithCode, permissions } = usePermission(pageName);
+const { permissions } = usePermission(pageName);
 </script>
 
 <template>