diff --git a/.env.development b/.env.development
index e8f6926..b7b7e07 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
 NODE_ENV = 'development'
 VITE_NOW_TYPE = 'dist'
 # Base API
-# VITE_APP_BASE_URL='http://192.168.1.14:8546'
-VITE_APP_BASE_URL='https://erp.lihaink.cn'
\ No newline at end of file
+VITE_APP_BASE_URL='http://192.168.1.14:8546'
+# VITE_APP_BASE_URL='https://erp.lihaink.cn'
\ No newline at end of file
diff --git a/src/components/popup/index.vue b/src/components/popup/index.vue
index b5fc599..e3bd441 100644
--- a/src/components/popup/index.vue
+++ b/src/components/popup/index.vue
@@ -12,7 +12,7 @@
             <!-- 自定义内容 -->
             <slot>{{ content }}</slot>
             <!-- 底部弹窗页脚 -->
-            <template #footer>
+            <template #footer v-if="bottomBtn">
                 <div class="dialog-footer">
                     <el-button v-if="cancelButtonText" @click="handleEvent('cancel')">
                         {{ cancelButtonText }}
@@ -77,6 +77,10 @@ export default defineComponent({
         customClass: {
             type: String,
             default: ''
+        },
+        bottomBtn: {
+            type: Boolean,
+            default: true
         }
     },
     emits: ['confirm', 'cancel', 'close', 'open'],
diff --git a/src/views/data/merchant/merchant/detail.vue b/src/views/data/merchant/merchant/detail.vue
new file mode 100644
index 0000000..b06262b
--- /dev/null
+++ b/src/views/data/merchant/merchant/detail.vue
@@ -0,0 +1,196 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="60vw" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="3" border>
+                <el-descriptions-item label="商户头像">
+                    <material-picker v-model="formData.mer_avatar" disabled />
+                </el-descriptions-item>
+                <el-descriptions-item label="商户名称">
+                    {{ formData.mer_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户分类">
+                    <dict-value :options="dictData.mer_category_type" :value="formData.category_id" />
+                </el-descriptions-item>
+                <el-descriptions-item label="店铺类型">
+                    <dict-value :options="dictData.merchat_type" :value="formData.type_id" />
+                </el-descriptions-item>
+                <el-descriptions-item label="店主姓名">
+                    <dict-value :options="dictData.service_user" :value="formData.type_id" />
+                </el-descriptions-item>
+                <el-descriptions-item label="是否支持先货后款">
+                    <dict-value :options="dictData.show_status" :value="formData.credit_buy" />
+                </el-descriptions-item>
+                <el-descriptions-item label="结算周期(天)">
+                    {{ formData.settle_cycle }}
+                </el-descriptions-item>
+                <el-descriptions-item label="利率">
+                    {{ formData.interest_rate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="城市">
+                    {{ formData.city_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="区县">
+                    {{ formData.area_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="镇街">
+                    {{ formData.street_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="村">
+                    {{ formData.village_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户地址">
+                    {{ formData.mer_address }}
+                </el-descriptions-item>
+                <el-descriptions-item label="排序">
+                    {{ formData.sort }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户是否禁用">
+                    <dict-value :options="dictData.show_status" :value="formData.status" />
+                </el-descriptions-item>
+                <el-descriptions-item label="提成比例">
+                    {{ formData.commission_rate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户手续费单独设置">
+                    <dict-value :options="dictData.show_status" :value="formData.commission_switch" />
+                </el-descriptions-item>
+                <el-descriptions-item label="经度">
+                    {{ formData.long }}
+                </el-descriptions-item>
+                <el-descriptions-item label="纬度">
+                    {{ formData.lat }}
+                </el-descriptions-item>
+                <el-descriptions-item label="店铺电话">
+                    {{ formData.service_phone }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户余额">
+                    {{ formData.mer_money }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户备注">
+                    {{ formData.mark }}
+                </el-descriptions-item>
+                <el-descriptions-item label="银行卡转账信息">
+                    {{ formData.financial_bank }}
+                </el-descriptions-item>
+                <el-descriptions-item label="微信转账信息">
+                    {{ formData.financial_wechat }}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付宝转账信息">
+                    {{ formData.financial_alipay }}
+                </el-descriptions-item>
+                <el-descriptions-item label="默认使用类型">
+                    <dict-value :options="dictData.financial_type" :value="formData.financial_type" />
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '商户详情'
+})
+
+// 表单数据
+const formData = reactive({
+    financial_type: "",
+    mer_id: '',
+    category_id: '',
+    type_id: '',
+    mer_name: '',
+    service_user: "",
+    credit_buy: '',
+    settle_cycle: '',
+    interest_rate: '',
+    province_id: '510000',
+    city_id: '',
+    city_name: '',
+    area_id: '',
+    area_name: '',
+    street_id: '',
+    street_name: '',
+    village_id: '',
+    village_name: '',
+    mer_address: '',
+    mer_avatar: '',
+    mark: '',
+    sort: '',
+    status: '',
+    commission_rate: '',
+    commission_switch: '',
+    long: '',
+    lat: '',
+    service_phone: '',
+    mer_money: '',
+    financial_bank: '',
+    financial_wechat: '',
+    financial_alipay: '',
+})
+
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/data/merchant/merchant/index.vue b/src/views/data/merchant/merchant/index.vue
index 48cb01f..3d2bd05 100644
--- a/src/views/data/merchant/merchant/index.vue
+++ b/src/views/data/merchant/merchant/index.vue
@@ -115,12 +115,12 @@
                         </template>
                     </el-table-column>
                     <el-table-column label="商户名称" prop="mer_name" show-overflow-tooltip />
-                    <el-table-column label="是否支持先货后款" prop="credit_buy">
+                    <el-table-column label="是否支持先货后款" prop="credit_buy" width="160">
                         <template #default="{ row }">
                             <dict-value :options="dictData.show_status" :value="row.credit_buy" />
                         </template>
                     </el-table-column>
-                    <el-table-column label="结算周期(天)" prop="settle_cycle" show-overflow-tooltip />
+                    <el-table-column label="结算周期(天)" prop="settle_cycle" width="120" show-overflow-tooltip />
                     <el-table-column label="利率" prop="interest_rate" show-overflow-tooltip />
                     <el-table-column label="城市" prop="city_name" show-overflow-tooltip />
                     <el-table-column label="区县" prop="area_name" show-overflow-tooltip />
@@ -132,10 +132,10 @@
                     <el-table-column label="提成比例" prop="commission_rate" show-overflow-tooltip />
                     <el-table-column label="店铺电话" prop="service_phone" show-overflow-tooltip />
                     <el-table-column label="商户余额" prop="mer_money" show-overflow-tooltip />
-                    <el-table-column label="银行卡转账信息" prop="financial_bank" show-overflow-tooltip />
-                    <el-table-column label="微信转账信息" prop="financial_wechat" show-overflow-tooltip />
-                    <el-table-column label="支付宝转账信息" prop="financial_alipay" show-overflow-tooltip />
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column label="银行卡转账信息" prop="financial_bank" width="140" show-overflow-tooltip />
+                    <el-table-column label="微信转账信息" prop="financial_wechat" width="140" show-overflow-tooltip />
+                    <el-table-column label="支付宝转账信息" prop="financial_alipay" width="160" show-overflow-tooltip />
+                    <el-table-column label="操作" width="170" fixed="right">
                         <template #default="{ row }">
                             <el-button v-perms="['merchat.merchant/edit']" type="primary" link @click="handleEdit(row)">
                                 编辑
@@ -144,6 +144,9 @@
                                 @click="handleDelete(row.mer_id)">
                                 删除
                             </el-button>
+                            <el-button link @click="handleDetail(row)">
+                                详情
+                            </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -153,20 +156,25 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+            @close="showDetail = false" />
     </div>
 </template>
 
 <script lang="ts" setup name="merchantLists">
 import { usePaging } from '@/hooks/usePaging'
 import { useDictData } from '@/hooks/useDictOptions'
-import { apiMerchantLists, apiMerchantDelete } from '@/api/merchant'
-import { timeFormat } from '@/utils/util'
+import { apiMerchantLists, apiMerchantDelete, apiMerchantDetail } from '@/api/merchant'
 import feedback from '@/utils/feedback'
 import EditPopup from './edit.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
+const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
 // 是否显示编辑框
 const showEdit = ref(false)
+const showDetail = ref(false)
+
 
 
 // 查询条件
@@ -223,6 +231,15 @@ const handleDelete = async (mer_id: number | any[]) => {
     getLists()
 }
 
+// 详情
+const handleDetail = async (data) => {
+    // let res = await apiMerchantDetail({ mer_id })
+    showDetail.value = true
+    await nextTick()
+    detailRef.value?.open('edit')
+    detailRef.value?.setFormData(data)
+}
+
 getLists()
 </script>
 
diff --git a/src/views/data/supplier/supplier/detail.vue b/src/views/data/supplier/supplier/detail.vue
new file mode 100644
index 0000000..c918c31
--- /dev/null
+++ b/src/views/data/supplier/supplier/detail.vue
@@ -0,0 +1,186 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="60vw" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="3" border>
+                <el-descriptions-item label="商户头像">
+                    <material-picker v-model="formData.mer_avatar" disabled />
+                </el-descriptions-item>
+                <el-descriptions-item label="商户名称">
+                    {{ formData.mer_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户分类">
+                    <dict-value :options="dictData.mer_category_type" :value="formData.category_id" />
+                </el-descriptions-item>
+                <el-descriptions-item label="店铺类型">
+                    <dict-value :options="dictData.merchat_type" :value="formData.type_id" />
+                </el-descriptions-item>
+                <el-descriptions-item label="结算周期(天)">
+                    {{ formData.settle_cycle }}
+                </el-descriptions-item>
+                <el-descriptions-item label="利率">
+                    {{ formData.interest_rate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="标签">
+                    {{ formData.sys_labels_text }}
+                </el-descriptions-item>
+                <el-descriptions-item label="城市">
+                    {{ formData.city_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="区县">
+                    {{ formData.area_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="镇街">
+                    {{ formData.street_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="村">
+                    {{ formData.village_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户地址">
+                    {{ formData.mer_address }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户是否禁用">
+                    <dict-value :options="dictData.show_status" :value="formData.status" />
+                </el-descriptions-item>
+                <el-descriptions-item label="提成比例">
+                    {{ formData.commission_rate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户手续费单独设置">
+                    <dict-value :options="dictData.show_status" :value="formData.commission_switch" />
+                </el-descriptions-item>
+                <el-descriptions-item label="经度">
+                    {{ formData.long }}
+                </el-descriptions-item>
+                <el-descriptions-item label="纬度">
+                    {{ formData.lat }}
+                </el-descriptions-item>
+                <el-descriptions-item label="店铺电话">
+                    {{ formData.service_phone }}
+                </el-descriptions-item>
+                <el-descriptions-item label="商户余额">
+                    {{ formData.mer_money }}
+                </el-descriptions-item>
+                <el-descriptions-item label="银行卡转账信息">
+                    {{ formData.financial_bank }}
+                </el-descriptions-item>
+                <el-descriptions-item label="微信转账信息">
+                    {{ formData.financial_wechat }}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付宝转账信息">
+                    {{ formData.financial_alipay }}
+                </el-descriptions-item>
+                <el-descriptions-item label="默认使用类型">
+                    <dict-value :options="dictData.financial_type" :value="formData.financial_type" />
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '供应商详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    category_id: '',
+    type_id: '',
+    mer_name: '',
+    settle_cycle: '',
+    interest_rate: '',
+    sys_labels: [],
+    sys_labels_text: '',
+    province_id: '510000',
+    city_id: '',
+    city_name: "",
+    area_id: '',
+    area_name: '',
+    street_id: '',
+    street_name: '',
+    village_id: '',
+    village_name: '',
+    mer_address: '',
+    mer_avatar: '',
+    mark: '',
+    status: '',
+    commission_rate: '',
+    commission_switch: '',
+    long: '',
+    lat: '',
+    service_phone: '',
+    mer_money: '',
+    financial_bank: '',
+    financial_wechat: '',
+    financial_alipay: '',
+    financial_type: '',
+})
+
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/data/supplier/supplier/details.vue b/src/views/data/supplier/supplier/details.vue
deleted file mode 100644
index fc04e4a..0000000
--- a/src/views/data/supplier/supplier/details.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-<template>
-    <div class="edit-popup">
-        <popup ref="popupRef" title="详情" :async="true" width="550px" :cancelButtonText="false" :confirmButtonText="false">
-            <el-form ref="formRef" :model="formData" label-width="90px">
-                <el-form-item label="商户分类 id" prop="category_id">
-                    <el-input v-model="formData.category_id" clearable placeholder="请输入商户分类 id" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="店铺类型 id" prop="type_id">
-                    <el-input v-model="formData.type_id" clearable placeholder="请输入店铺类型 id" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户名称" prop="mer_name">
-                    <el-input v-model="formData.mer_name" clearable placeholder="请输入商户名称" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="结算周期,单位天" prop="settle_cycle">
-                    <el-input v-model="formData.settle_cycle" clearable placeholder="请输入结算周期(天)" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="利率" prop="interest_rate">
-                    <el-input v-model="formData.interest_rate" clearable placeholder="请输入利率" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="标签" prop="sys_labels">
-                    <el-input v-model="formData.sys_labels" clearable placeholder="请输入标签" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="城市code" prop="city_id">
-                    <el-input v-model="formData.city_id" clearable placeholder="请输入城市code" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="区县code" prop="area_id">
-                    <el-input v-model="formData.area_id" clearable placeholder="请输入区县code" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="镇街表code" prop="street_id">
-                    <el-input v-model="formData.street_id" clearable placeholder="请输入镇街表code" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="村code" prop="village_id">
-                    <el-input v-model="formData.village_id" clearable placeholder="请输入村code" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户地址" prop="mer_address">
-                    <el-input v-model="formData.mer_address" clearable placeholder="请输入商户地址" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户头像" prop="mer_avatar">
-                    <el-input v-model="formData.mer_avatar" clearable placeholder="请输入商户头像" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户备注" prop="mark">
-                    <el-input v-model="formData.mark" clearable placeholder="请输入商户备注" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户是否禁用0锁定,1正常" prop="status">
-                    <el-radio-group v-model="formData.status" placeholder="请选择商户是否禁用" :disabled="true">
-                        <el-radio v-for="(item, index) in dictData.show_status" :key="index" :label="parseInt(item.value)">
-                            {{ item.name }}
-                        </el-radio>
-                    </el-radio-group>
-                </el-form-item>
-                <el-form-item label="提成比例" prop="commission_rate">
-                    <el-input v-model="formData.commission_rate" clearable placeholder="请输入提成比例" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户手续费单独设置 0 关闭 1 开启" prop="commission_switch">
-                    <el-radio-group v-model="formData.commission_switch" placeholder="请选择商户手续费单独设置 0 关闭 1 开启"
-                        :disabled="true">
-                        <el-radio v-for="(item, index) in dictData.show_status" :key="index" :label="parseInt(item.value)">
-                            {{ item.name }}
-                        </el-radio>
-                    </el-radio-group>
-                </el-form-item>
-                <el-form-item label="经度" prop="long">
-                    <el-input v-model="formData.long" clearable placeholder="请输入经度" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="纬度" prop="lat">
-                    <el-input v-model="formData.lat" clearable placeholder="请输入纬度" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="店铺电话" prop="service_phone">
-                    <el-input v-model="formData.service_phone" clearable placeholder="请输入店铺电话" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="商户余额" prop="mer_money">
-                    <el-input v-model="formData.mer_money" clearable placeholder="请输入商户余额" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="银行卡转账信息" prop="financial_bank">
-                    <el-input v-model="formData.financial_bank" clearable placeholder="请输入银行卡转账信息" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="微信转账信息" prop="financial_wechat">
-                    <el-input v-model="formData.financial_wechat" clearable placeholder="请输入微信转账信息" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="支付宝转账信息" prop="financial_alipay">
-                    <el-input v-model="formData.financial_alipay" clearable placeholder="请输入支付宝转账信息" :readonly="true" />
-                </el-form-item>
-                <el-form-item label="默认使用类型" prop="financial_type">
-                    <el-input v-model="formData.financial_type" clearable placeholder="请输入默认使用类型" :readonly="true" />
-                </el-form-item>
-            </el-form>
-        </popup>
-    </div>
-</template>
-
-<script lang="ts" setup name="supplierDETAILS">
-import type { FormInstance } from 'element-plus'
-import Popup from '@/components/popup/index.vue'
-import { apiSupplierAdd, apiSupplierEdit, apiSupplierDetail } from '@/api/supplier'
-import { timeFormat } from '@/utils/util'
-import type { PropType } from 'vue'
-defineProps({
-    dictData: {
-        type: Object as PropType<Record<string, any[]>>,
-        default: () => ({})
-    }
-})
-const emit = defineEmits(['success', 'close'])
-const formRef = shallowRef<FormInstance>()
-const popupRef = shallowRef<InstanceType<typeof Popup>>()
-const mode = ref('add')
-
-
-
-// 表单数据
-const formData = reactive({
-    id: '',
-    category_id: '',
-    type_id: '',
-    mer_name: '',
-    settle_cycle: '',
-    interest_rate: '',
-    sys_labels: '',
-    city_id: '',
-    area_id: '',
-    street_id: '',
-    village_id: '',
-    mer_address: '',
-    mer_avatar: '',
-    mark: '',
-    status: '',
-    commission_rate: '',
-    commission_switch: '',
-    long: '',
-    lat: '',
-    service_phone: '',
-    mer_money: '',
-    financial_bank: '',
-    financial_wechat: '',
-    financial_alipay: '',
-    financial_type: '',
-})
-
-
-
-// 获取详情
-const setFormData = async (data: Record<any, any>) => {
-    for (const key in formData) {
-        if (data[key] != null && data[key] != undefined) {
-            //@ts-ignore
-            formData[key] = data[key]
-        }
-    }
-
-
-}
-
-const getDetail = async (row: Record<string, any>) => {
-    const data = await apiSupplierDetail({
-        id: row.id
-    })
-    setFormData(data)
-}
-
-//打开弹窗
-const open = () => {
-    popupRef.value?.open()
-}
-
-// 关闭回调
-const handleClose = () => {
-    emit('close')
-}
-
-
-
-defineExpose({
-    open,
-    setFormData,
-    getDetail
-})
-</script>
diff --git a/src/views/data/supplier/supplier/index.vue b/src/views/data/supplier/supplier/index.vue
index a2c47f9..5643c72 100644
--- a/src/views/data/supplier/supplier/index.vue
+++ b/src/views/data/supplier/supplier/index.vue
@@ -77,7 +77,7 @@
                         </template>
                     </el-table-column>
                     <el-table-column label="商户余额" prop="mer_money" show-overflow-tooltip />
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column label="操作" width="170" fixed="right">
                         <template #default="{ row }">
                             <el-button v-perms="['supplier.supplier/edit']" type="primary" link @click="handleEdit(row)">
                                 编辑
@@ -86,6 +86,9 @@
                                 @click="handleDelete(row.id)">
                                 删除
                             </el-button>
+                            <el-button link @click="handleDetail(row.id)">
+                                详情
+                            </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -95,20 +98,25 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+            @close="showDetail = false" />
     </div>
 </template>
 
 <script lang="ts" setup name="supplierLists">
 import { usePaging } from '@/hooks/usePaging'
 import { useDictData } from '@/hooks/useDictOptions'
-import { apiSupplierLists, apiSupplierDelete } from '@/api/supplier'
+import { apiSupplierLists, apiSupplierDelete, apiSupplierDetail } from '@/api/supplier'
 import { timeFormat } from '@/utils/util'
 import feedback from '@/utils/feedback'
 import EditPopup from './edit.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
+const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
 // 是否显示编辑框
 const showEdit = ref(false)
+const showDetail = ref(false)
 
 
 // 查询条件
@@ -157,6 +165,15 @@ const handleDelete = async (id: number | any[]) => {
     getLists()
 }
 
+// 详情
+const handleDetail = async (id: any) => {
+    let res = await apiSupplierDetail({ id })
+    showDetail.value = true
+    await nextTick()
+    detailRef.value?.open('edit')
+    detailRef.value?.setFormData(res)
+}
+
 getLists()
 </script>
 
diff --git a/src/views/goods/brand/detail.vue b/src/views/goods/brand/detail.vue
new file mode 100644
index 0000000..9e72728
--- /dev/null
+++ b/src/views/goods/brand/detail.vue
@@ -0,0 +1,112 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="550px" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="1" border>
+                <el-descriptions-item label="品牌名称">
+                    {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="品牌编号">
+                    {{ formData.number }}
+                </el-descriptions-item>
+                <el-descriptions-item label="备注信息">
+                    {{ formData.data }}
+                </el-descriptions-item>
+                <el-descriptions-item label="扩展信息">
+                    {{ formData.more }}
+                </el-descriptions-item>
+                <el-descriptions-item label="图片">
+                    <material-picker v-model="formData.pic" disabled />
+                </el-descriptions-item>
+                <el-descriptions-item label="排序">
+                    {{ formData.sort }}
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '品牌详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    name: '',
+    py: '',
+    number: '',
+    data: '',
+    more: '',
+    pic: '',
+    sort: '',
+})
+
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/goods/brand/index.vue b/src/views/goods/brand/index.vue
index b84609e..be3b2ad 100644
--- a/src/views/goods/brand/index.vue
+++ b/src/views/goods/brand/index.vue
@@ -51,7 +51,7 @@
                         </template>
                     </el-table-column>
                     <el-table-column label="排序" prop="sort" show-overflow-tooltip />
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column label="操作" width="170" fixed="right">
                         <template #default="{ row }">
                             <el-button v-perms="['goods.brand/edit']" type="primary" link @click="handleEdit(row)">
                                 编辑
@@ -59,6 +59,9 @@
                             <el-button v-perms="['goods.brand/delete']" type="danger" link @click="handleDelete(row.id)">
                                 删除
                             </el-button>
+                            <el-button v-perms="['goods.brand/delete']" link @click="handleDetail(row.id)">
+                                详情
+                            </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -68,20 +71,24 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+            @close="showDetail = false" />
     </div>
 </template>
 
 <script lang="ts" setup name="brandLists">
 import { usePaging } from '@/hooks/usePaging'
 import { useDictData } from '@/hooks/useDictOptions'
-import { apiBrandLists, apiBrandDelete } from '@/api/brand'
-import { timeFormat } from '@/utils/util'
+import { apiBrandLists, apiBrandDelete, apiBrandDetail } from '@/api/brand'
 import feedback from '@/utils/feedback'
 import EditPopup from './edit.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
+const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
 // 是否显示编辑框
 const showEdit = ref(false)
+const showDetail = ref(false)
 
 
 // 查询条件
@@ -127,6 +134,14 @@ const handleEdit = async (data: any) => {
     editRef.value?.setFormData(data)
 }
 
+// 详情
+const handleDetail = async (id: any) => {
+    let res = await apiBrandDetail({ id })
+    showDetail.value = true
+    await nextTick()
+    detailRef.value?.open('edit')
+    detailRef.value?.setFormData(res)
+}
 // 删除
 const handleDelete = async (id: number | any[]) => {
     await feedback.confirm('确定要删除?')
diff --git a/src/views/goods/code/detail.vue b/src/views/goods/code/detail.vue
new file mode 100644
index 0000000..ae25e2e
--- /dev/null
+++ b/src/views/goods/code/detail.vue
@@ -0,0 +1,111 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="550px" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="1" border>
+                <el-descriptions-item label="条码名称">
+                    {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="条码内容">
+                    {{ formData.code }}
+                </el-descriptions-item>
+                <el-descriptions-item label="条码类型">
+                    <dict-value :options="dictData.code_type" :value="formData.type" />
+                </el-descriptions-item>
+                <el-descriptions-item label="备注信息">
+                    {{ formData.data }}
+                </el-descriptions-item>
+                <el-descriptions-item label="扩展信息">
+                    {{ formData.more }}
+                </el-descriptions-item>
+                <el-descriptions-item label="排序">
+                    {{ formData.sort }}
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '品牌详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    name: '',
+    py: '',
+    code: '',
+    type: '',
+    data: '',
+    more: '',
+    sort: '',
+})
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/goods/code/details.vue b/src/views/goods/code/details.vue
deleted file mode 100644
index f404d7e..0000000
--- a/src/views/goods/code/details.vue
+++ /dev/null
@@ -1,114 +0,0 @@
-<template>
-    <div class="edit-popup">
-        <popup
-            ref="popupRef"
-            title="详情"
-            :async="true"
-            width="550px"
-            :cancelButtonText="false"
-            :confirmButtonText="false"
-        >
-            <el-form ref="formRef" :model="formData" label-width="90px">
-                <el-form-item label="条码名称" prop="name">
-                    <el-input v-model="formData.name" clearable placeholder="请输入条码名称" :readonly="true"/>
-                </el-form-item>
-                <el-form-item label="拼音信息" prop="py">
-                    <el-input v-model="formData.py" clearable placeholder="请输入拼音信息" :readonly="true"/>
-                </el-form-item>
-                <el-form-item label="条码内容" prop="code">
-                    <el-input v-model="formData.code" clearable placeholder="请输入条码内容" :readonly="true"/>
-                </el-form-item>
-                <el-form-item label="条码类型" prop="type">
-                    <el-select class="flex-1" v-model="formData.type" clearable placeholder="请选择条码类型" :disabled="true">
-                        <el-option 
-                            v-for="(item, index) in dictData.code_type"
-                            :key="index" 
-                            :label="item.name"
-                            :value="parseInt(item.value)"
-                        />
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="备注信息" prop="data">
-                    <el-input v-model="formData.data" clearable placeholder="请输入备注信息" :readonly="true"/>
-                </el-form-item>
-                <el-form-item label="扩展信息" prop="more">
-                    <el-input v-model="formData.more" clearable placeholder="请输入扩展信息" :readonly="true"/>
-                </el-form-item>
-                <el-form-item label="排序" prop="sort">
-                    <el-input v-model="formData.sort" clearable placeholder="请输入排序" :readonly="true"/>
-                </el-form-item>
-            </el-form>
-        </popup>
-    </div>
-</template>
-
-<script lang="ts" setup name="codeDETAILS">
-import type { FormInstance } from 'element-plus'
-import Popup from '@/components/popup/index.vue'
-import { apiCodeAdd, apiCodeEdit, apiCodeDetail } from '@/api/code'
-import { timeFormat } from '@/utils/util'
-import type { PropType } from 'vue'
-defineProps({
-    dictData: {
-        type: Object as PropType<Record<string, any[]>>,
-        default: () => ({})
-    }
-})
-const emit = defineEmits(['success', 'close'])
-const formRef = shallowRef<FormInstance>()
-const popupRef = shallowRef<InstanceType<typeof Popup>>()
-const mode = ref('add')
-
-
-
-// 表单数据
-const formData = reactive({
-    id: '',
-    name: '',
-    py: '',
-    code: '',
-    type: '',
-    data: '',
-    more: '',
-    sort: '',
-})
-
-
-
-// 获取详情
-const setFormData = async (data: Record<any, any>) => {
-    for (const key in formData) {
-        if (data[key] != null && data[key] != undefined) {
-            //@ts-ignore
-            formData[key] = data[key]
-        }
-    }
-    
-    
-}
-
-const getDetail = async (row: Record<string, any>) => {
-    const data = await apiCodeDetail({
-        id: row.id
-    })
-    setFormData(data)
-}
-
-//打开弹窗
-const open = () => {
-    popupRef.value?.open()
-}
-
-// 关闭回调
-const handleClose = () => {
-    emit('close')
-}
-
-
-
-defineExpose({
-    open,
-    setFormData,
-    getDetail
-})
-</script>
diff --git a/src/views/goods/code/index.vue b/src/views/goods/code/index.vue
index 4467145..bb98932 100644
--- a/src/views/goods/code/index.vue
+++ b/src/views/goods/code/index.vue
@@ -58,17 +58,17 @@
                     <el-table-column label="备注信息" prop="data" show-overflow-tooltip />
                     <el-table-column label="扩展信息" prop="more" show-overflow-tooltip />
                     <el-table-column label="排序" prop="sort" show-overflow-tooltip />
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column label="操作" width="170" fixed="right">
                         <template #default="{ row }">
                             <el-button v-perms="['goods.code/edit']" type="primary" link @click="handleEdit(row)">
                                 编辑
                             </el-button>
-                            <el-button type="primary" link @click="handleDetails(row)">
-                                详情
-                            </el-button>
                             <el-button v-perms="['goods.code/delete']" type="danger" link @click="handleDelete(row.id)">
                                 删除
                             </el-button>
+                            <el-button link @click="handleDetail(row.id)">
+                                详情
+                            </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -78,25 +78,25 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
-        <detail-popup v-if="detailEdit" ref="detailRef" :dict-data="dictData" @success="getLists"
-            @close="detailEdit = false" />
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+            @close="showDetail = false" />
     </div>
 </template>
 
 <script lang="ts" setup name="codeLists">
 import { usePaging } from '@/hooks/usePaging'
 import { useDictData } from '@/hooks/useDictOptions'
-import { apiCodeLists, apiCodeDelete } from '@/api/code'
-import { timeFormat } from '@/utils/util'
+import { apiCodeLists, apiCodeDelete, apiCodeDetail } from '@/api/code'
 import feedback from '@/utils/feedback'
 import EditPopup from './edit.vue'
-import DetailPopup from './details.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
-const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
+const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
 // 是否显示编辑框
 const showEdit = ref(false)
-const detailEdit = ref(false)
+const showDetail = ref(false)
+
 
 
 // 查询条件
@@ -150,6 +150,16 @@ const handleDetails = async (data: any) => {
     detailRef.value?.setFormData(data)
 }
 
+
+// 详情
+const handleDetail = async (id: any) => {
+    let res = await apiCodeDetail({ id })
+    showDetail.value = true
+    await nextTick()
+    detailRef.value?.open('edit')
+    detailRef.value?.setFormData(res)
+}
+
 // 删除
 const handleDelete = async (id: number | any[]) => {
     await feedback.confirm('确定要删除?')
diff --git a/src/views/goods/goods/detail.vue b/src/views/goods/goods/detail.vue
new file mode 100644
index 0000000..ae25e2e
--- /dev/null
+++ b/src/views/goods/goods/detail.vue
@@ -0,0 +1,111 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="550px" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="1" border>
+                <el-descriptions-item label="条码名称">
+                    {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="条码内容">
+                    {{ formData.code }}
+                </el-descriptions-item>
+                <el-descriptions-item label="条码类型">
+                    <dict-value :options="dictData.code_type" :value="formData.type" />
+                </el-descriptions-item>
+                <el-descriptions-item label="备注信息">
+                    {{ formData.data }}
+                </el-descriptions-item>
+                <el-descriptions-item label="扩展信息">
+                    {{ formData.more }}
+                </el-descriptions-item>
+                <el-descriptions-item label="排序">
+                    {{ formData.sort }}
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '品牌详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    name: '',
+    py: '',
+    code: '',
+    type: '',
+    data: '',
+    more: '',
+    sort: '',
+})
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/goods/unit/detail.vue b/src/views/goods/unit/detail.vue
new file mode 100644
index 0000000..7c3f2bb
--- /dev/null
+++ b/src/views/goods/unit/detail.vue
@@ -0,0 +1,103 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="550px" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="1" border>
+                <el-descriptions-item label="单位名称">
+                    {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="单位编号">
+                    {{ formData.number }}
+                </el-descriptions-item>
+                <el-descriptions-item label="备注信息">
+                    {{ formData.data }}
+                </el-descriptions-item>
+                <el-descriptions-item label="扩展信息">
+                    {{ formData.more }}
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '单位详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    name: '',
+    py: '',
+    number: '',
+    data: '',
+    more: '',
+})
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/goods/unit/index.vue b/src/views/goods/unit/index.vue
index 2f38e68..c0ddf86 100644
--- a/src/views/goods/unit/index.vue
+++ b/src/views/goods/unit/index.vue
@@ -42,7 +42,7 @@
                     <el-table-column label="单位编号" prop="number" show-overflow-tooltip />
                     <el-table-column label="备注信息" prop="data" show-overflow-tooltip />
                     <el-table-column label="扩展信息" prop="more" show-overflow-tooltip />
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column label="操作" width="170" fixed="right">
                         <template #default="{ row }">
                             <el-button v-perms="['goods.unit/edit']" type="primary" link @click="handleEdit(row)">
                                 编辑
@@ -50,6 +50,9 @@
                             <el-button v-perms="['goods.unit/delete']" type="danger" link @click="handleDelete(row.id)">
                                 删除
                             </el-button>
+                            <el-button v-perms="['goods.unit/edit']" link @click="handleDetail(row.id)">
+                                详情
+                            </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -59,20 +62,24 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+            @close="showDetail = false" />
     </div>
 </template>
 
 <script lang="ts" setup name="unitLists">
 import { usePaging } from '@/hooks/usePaging'
 import { useDictData } from '@/hooks/useDictOptions'
-import { apiUnitLists, apiUnitDelete } from '@/api/unit'
-import { timeFormat } from '@/utils/util'
+import { apiUnitLists, apiUnitDelete, apiUnitDetail } from '@/api/unit'
 import feedback from '@/utils/feedback'
-import EditPopup from './edit.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
+const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
 // 是否显示编辑框
 const showEdit = ref(false)
+const showDetail = ref(false)
+
 
 
 // 查询条件
@@ -116,6 +123,15 @@ const handleEdit = async (data: any) => {
     editRef.value?.setFormData(data)
 }
 
+// 详情
+const handleDetail = async (id: any) => {
+    let res = await apiUnitDetail({ id })
+    showDetail.value = true
+    await nextTick()
+    detailRef.value?.open('edit')
+    detailRef.value?.setFormData(res)
+}
+
 // 删除
 const handleDelete = async (id: number | any[]) => {
     await feedback.confirm('确定要删除?')
diff --git a/src/views/retail/cashierclass/detail.vue b/src/views/retail/cashierclass/detail.vue
new file mode 100644
index 0000000..8163fc0
--- /dev/null
+++ b/src/views/retail/cashierclass/detail.vue
@@ -0,0 +1,140 @@
+<template>
+    <div class="edit-popup">
+        <popup ref="popupRef" :async="true" width="60vw" @close="handleClose" :bottom-btn="false">
+            <el-descriptions class="margin-top" :title="popupTitle" :column="3" border>
+                <el-descriptions-item label="所属商户">
+                    <material-picker v-model="formData.merchant" disabled />
+                </el-descriptions-item>
+                <el-descriptions-item label="客户">
+                    {{ formData.user_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="单据时间">
+                    {{ formData.create_time }}
+                </el-descriptions-item>
+                <el-descriptions-item label="单据编号">
+                    {{ formData.number }}
+                </el-descriptions-item>
+                <el-descriptions-item label="单据金额">
+                    {{ formData.total }}
+                </el-descriptions-item>
+                <el-descriptions-item label="抵扣金额">
+                    {{ formData.deduction_price }}
+                </el-descriptions-item>
+                <el-descriptions-item label="实际金额">
+                    {{ formData.actual }}
+                </el-descriptions-item>
+                <el-descriptions-item label="实收金额">
+                    {{ formData.money }}
+                </el-descriptions-item>
+                <el-descriptions-item label="支付方式">
+                    <dict-value :options="dictData.pay_type" :value="formData.pay_type" />
+                </el-descriptions-item>
+                <el-descriptions-item label="审核状态">
+                    <dict-value :options="dictData.auditing_type" :value="formData.type" />
+                </el-descriptions-item>
+                <el-descriptions-item label="审核人">
+                    {{ formData.auditinguser_name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="审核时间">
+                    {{ formData.auditingtime }}
+                </el-descriptions-item>
+            </el-descriptions>
+        </popup>
+    </div>
+</template>
+
+<script lang="ts" setup name="brandEdit">
+import Popup from '@/components/popup/index.vue'
+import type { PropType } from 'vue'
+defineProps({
+    dictData: {
+        type: Object as PropType<Record<string, any[]>>,
+        default: () => ({})
+    }
+})
+const emit = defineEmits(['success', 'close'])
+const popupRef = shallowRef<InstanceType<typeof Popup>>()
+const mode = ref('add')
+
+
+// 弹窗标题
+const popupTitle = computed(() => {
+    return '订单详情'
+})
+
+// 表单数据
+const formData = reactive({
+    id: '',
+    merchant: '',
+    user_name: "",
+    create_time: "",
+    store_id: '',
+    customer: '',
+    time: '',
+    number: '',
+    total: '',
+    deduction_price: '',
+    actual: '',
+    money: '',
+    pay_type: '',
+    data: '',
+    type: '',
+    auditinguser: '',
+    auditinguser_name: "",
+    auditingtime: '',
+    more: '',
+})
+
+// 表单验证
+const formRules = reactive<any>({
+    name: [{
+        required: true,
+        message: '请输入品牌名称',
+        trigger: ['blur']
+    }]
+})
+
+
+// 获取详情
+const setFormData = async (data: Record<any, any>) => {
+    for (const key in formData) {
+        if (data[key] != null && data[key] != undefined) {
+            //@ts-ignore
+            formData[key] = data[key]
+        }
+    }
+
+
+}
+
+
+
+// 提交按钮
+// const handleSubmit = async () => {
+//     await formRef.value?.validate()
+//     const data = { ...formData, }
+//     mode.value == 'edit'
+//         ? await apiBrandEdit(data)
+//         : await apiBrandAdd(data)
+//     popupRef.value?.close()
+//     emit('success')
+// }
+
+//打开弹窗
+const open = (type = 'add') => {
+    mode.value = type
+    popupRef.value?.open()
+}
+
+// 关闭回调
+const handleClose = () => {
+    emit('close')
+}
+
+
+
+defineExpose({
+    open,
+    setFormData,
+})
+</script>
diff --git a/src/views/retail/cashierclass/details.vue b/src/views/retail/cashierclass/details.vue
deleted file mode 100644
index e40d0eb..0000000
--- a/src/views/retail/cashierclass/details.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-<template>
-    <div class="edit-popup">
-        <popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
-            <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules" disabled>
-                <el-row>
-                    <el-col :span="8">
-                        <el-form-item label="所属商户" prop="merchant">
-                            <el-input v-model="formData.merchant" clearable placeholder="请输入所属商户" :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="归属门店" prop="store_id">
-                            <el-input v-model="formData.store_id" clearable placeholder="请输入归属门店" :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="客户ID" prop="customer">
-                            <el-input v-model="formData.customer" clearable placeholder="请输入客户ID" :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="单据时间" prop="time">
-                            <!-- <el-input v-model="formData.time" clearable placeholder="请输入单据时间" :readonly="false" /> -->
-                            <el-date-picker :readonly="false" class="flex-1 !flex" v-model="formData.time" clearable
-                                type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择单据时间">
-                            </el-date-picker>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="单据编号" prop="number">
-                            <el-input v-model="formData.number" clearable placeholder="请输入单据编号" :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="单据金额" prop="total">
-                            <el-input v-model="formData.total" type="number" clearable placeholder="请输入单据金额"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="抵扣金额" prop="deduction_price">
-                            <el-input v-model="formData.deduction_price" clearable placeholder="请输入抵扣金额"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="实际金额" prop="actual">
-                            <el-input v-model="formData.actual" type="number" clearable placeholder="请输入实际金额"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="实收金额" prop="money">
-                            <el-input v-model="formData.money" type="number" clearable placeholder="请输入实收金额"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="支付方式 " prop="pay_type">
-                            <el-select class="flex-1" v-model="formData.pay_type" clearable placeholder="请选择支付方式"
-                                :disabled="false">
-                                <el-option v-for="(item, index) in dictData.pay_type" :key="index" :label="item.name"
-                                    :value="parseInt(item.value)" />
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="备注信息" prop="data">
-                            <el-input v-model="formData.data" clearable placeholder="请输入备注信息" type="textarea"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="审核状态" prop="type">
-                            <el-radio-group v-model="formData.type" placeholder="请选择审核状态" :disabled="false">
-                                <el-radio v-for="(item, index) in dictData.auditing_type" :key="index"
-                                    :label="parseInt(item.value)">
-                                    {{ item.name }}
-                                </el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="审核人" prop="auditinguser">
-                            <el-input v-model="formData.auditinguser" clearable placeholder="请输入审核人" :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="审核时间" prop="auditingtime">
-                            <el-date-picker :readonly="false" class="flex-1 !flex" v-model="formData.auditingtime" clearable
-                                type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择审核时间">
-                            </el-date-picker>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="扩展信息" prop="more">
-                            <el-input v-model="formData.more" clearable placeholder="请输入扩展信息" type="textarea"
-                                :readonly="false" />
-                        </el-form-item>
-                    </el-col>
-
-
-
-                </el-row>
-
-
-            </el-form>
-        </popup>
-    </div>
-</template>
-
-<script lang="ts" setup name="cashierclassEdit">
-import type { FormInstance } from 'element-plus'
-import Popup from '@/components/popup/index.vue'
-import { apiCashierclassAdd, apiCashierclassEdit, apiCashierclassDetail } from '@/api/cashierclass'
-import { timeFormat } from '@/utils/util'
-import type { PropType } from 'vue'
-defineProps({
-    dictData: {
-        type: Object as PropType<Record<string, any[]>>,
-        default: () => ({})
-    }
-})
-const emit = defineEmits(['success', 'close'])
-const formRef = shallowRef<FormInstance>()
-const popupRef = shallowRef<InstanceType<typeof Popup>>()
-const mode = ref('add')
-
-
-// 弹窗标题
-const popupTitle = computed(() => {
-    return mode.value == 'edit' ? '编辑零售单' : '新增零售单'
-})
-
-// 表单数据
-const formData = reactive({
-    id: '',
-    merchant: '',
-    store_id: '',
-    customer: '',
-    time: '',
-    number: '',
-    total: '',
-    deduction_price: '',
-    actual: '',
-    money: '',
-    pay_type: '',
-    data: '',
-    type: '',
-    auditinguser: '',
-    auditingtime: '',
-    more: '',
-})
-
-
-// 表单验证
-const formRules = reactive<any>({
-    merchant: [{
-        required: true,
-        message: '请输入所属商户',
-        trigger: ['blur']
-    }],
-    customer: [{
-        required: true,
-        message: '请输入客户ID',
-        trigger: ['blur']
-    }],
-    time: [{
-        required: true,
-        message: '请输入单据时间',
-        trigger: ['blur']
-    }],
-    number: [{
-        required: true,
-        message: '请输入单据编号',
-        trigger: ['blur']
-    }],
-    total: [{
-        required: true,
-        message: '请输入单据金额',
-        trigger: ['blur']
-    }],
-    actual: [{
-        required: true,
-        message: '请输入实际金额',
-        trigger: ['blur']
-    }],
-    money: [{
-        required: true,
-        message: '请输入实收金额',
-        trigger: ['blur']
-    }],
-    pay_type: [{
-        required: true,
-        message: '请选择支付方式 0余额 1微信 2小程序 3 h5  4支付宝 5 支付宝扫码 6 微信扫码 8先货后款 10对公转账',
-        trigger: ['blur']
-    }]
-})
-
-
-// 获取详情
-const setFormData = async (data: Record<any, any>) => {
-    for (const key in formData) {
-        if (data[key] != null && data[key] != undefined) {
-            //@ts-ignore
-            formData[key] = data[key]
-        }
-    }
-
-    //@ts-ignore
-    formData.auditingtime = timeFormat(formData.auditingtime, 'yyyy-mm-dd hh:MM:ss')
-}
-
-const getDetail = async (row: Record<string, any>) => {
-    const data = await apiCashierclassDetail({
-        id: row.id
-    })
-    setFormData(data)
-}
-
-
-// 提交按钮
-const handleSubmit = async () => {
-    await formRef.value?.validate()
-    const data = { ...formData, }
-    mode.value == 'edit'
-        ? await apiCashierclassEdit(data)
-        : await apiCashierclassAdd(data)
-    popupRef.value?.close()
-    emit('success')
-}
-
-//打开弹窗
-const open = (type = 'add') => {
-    mode.value = type
-    popupRef.value?.open()
-}
-
-// 关闭回调
-const handleClose = () => {
-    emit('close')
-}
-
-
-
-defineExpose({
-    open,
-    setFormData,
-    getDetail
-})
-</script>
diff --git a/src/views/retail/cashierclass/index.vue b/src/views/retail/cashierclass/index.vue
index 000c530..a75e477 100644
--- a/src/views/retail/cashierclass/index.vue
+++ b/src/views/retail/cashierclass/index.vue
@@ -94,8 +94,7 @@
                                 @click="handleDelete(row.id)">
                                 删除
                             </el-button> -->
-                            <el-button v-perms="['retail.cashierclass/edit']" type="primary" link
-                                @click="handleDetail(row)">
+                            <el-button link @click="handleDetail(row)">
                                 详情
                             </el-button>
                         </template>
@@ -107,7 +106,7 @@
             </div>
         </el-card>
         <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
-        <detail-popup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
+        <DetailPopup v-if="showDetail" ref="detailRef" :dict-data="dictData" @success="getLists"
             @close="showDetail = false" />
     </div>
 </template>
@@ -119,7 +118,7 @@ import { apiCashierclassLists, apiCashierclassDelete, apiCashierclassAuditing }
 import { timeFormat } from '@/utils/util'
 import feedback from '@/utils/feedback'
 import EditPopup from './edit.vue'
-import DetailPopup from './details.vue'
+import DetailPopup from './detail.vue'
 
 const editRef = shallowRef<InstanceType<typeof EditPopup>>()
 const detailRef = shallowRef<InstanceType<typeof EditPopup>>()
@@ -173,7 +172,7 @@ const handleEdit = async (data: any) => {
 }
 
 // 详情
-const handleDetail = async (data: any) => {
+const handleDetail = async (data) => {
     showDetail.value = true
     await nextTick()
     detailRef.value?.open('edit')