Browse Source

Project Init

yigeren911 2 years ago
parent
commit
22aad627c9
50 changed files with 917 additions and 5072 deletions
  1. 1 1
      index.html
  2. 3 6
      src/api/controllerUrls.ts
  3. 1 1
      src/router/static.ts
  4. 0 77
      src/views/backend/enterprise/coupons/Invitefriends/index.vue
  5. 0 182
      src/views/backend/enterprise/coupons/Invitefriends/popupForm.vue
  6. 0 83
      src/views/backend/enterprise/coupons/usehistory/detail.vue
  7. 0 129
      src/views/backend/enterprise/coupons/usehistory/index.vue
  8. 0 94
      src/views/backend/enterprise/documentcenter/documents.vue
  9. 0 161
      src/views/backend/enterprise/documentcenter/popupForm.vue
  10. 0 84
      src/views/backend/enterprise/helpcenter/classification/index.vue
  11. 0 138
      src/views/backend/enterprise/helpcenter/classification/popupForm.vue
  12. 0 77
      src/views/backend/enterprise/helpcenter/illustration/index.vue
  13. 0 145
      src/views/backend/enterprise/helpcenter/illustration/popupForm.vue
  14. 0 53
      src/views/backend/enterprise/legalinstrument/privacypolicy.vue
  15. 0 56
      src/views/backend/enterprise/legalinstrument/useragreement.vue
  16. 1 1
      src/views/backend/enterprise/members/factionalism/index.vue
  17. 0 96
      src/views/backend/enterprise/messagecenter/notices.vue
  18. 0 187
      src/views/backend/enterprise/messagecenter/popupForm.vue
  19. 0 228
      src/views/backend/enterprise/orders/aftersale/auditDialog.vue
  20. 0 164
      src/views/backend/enterprise/orders/aftersale/index.vue
  21. 0 86
      src/views/backend/enterprise/orders/carrier/index.vue
  22. 0 116
      src/views/backend/enterprise/orders/carrier/popupForm.vue
  23. 0 647
      src/views/backend/enterprise/orders/ordermanagement/detail.vue
  24. 0 141
      src/views/backend/enterprise/orders/ordermanagement/index.vue
  25. 71 0
      src/views/backend/enterprise/project/parking/detailDialog.vue
  26. 13 9
      src/views/backend/enterprise/project/parking/index.vue
  27. 0 1
      src/views/backend/enterprise/project/parking/mapSetting.vue
  28. 228 0
      src/views/backend/enterprise/project/parking/parkingView.vue
  29. 0 98
      src/views/backend/enterprise/recommends/goodrelease/index.vue
  30. 0 67
      src/views/backend/enterprise/recommends/goodrelease/jumpPathList.vue
  31. 0 221
      src/views/backend/enterprise/recommends/goodrelease/popupForm.vue
  32. 0 99
      src/views/backend/enterprise/recommends/partners/index.vue
  33. 0 150
      src/views/backend/enterprise/recommends/partners/popupForm.vue
  34. 0 48
      src/views/backend/enterprise/smartscreen/aftermarket/index.vue
  35. 0 88
      src/views/backend/enterprise/smartscreen/goodinfo/index.vue
  36. 0 303
      src/views/backend/enterprise/smartscreen/goodinfo/popupForm.vue
  37. 0 72
      src/views/backend/enterprise/smartscreen/soldscreen/detail.vue
  38. 0 150
      src/views/backend/enterprise/smartscreen/soldscreen/index.vue
  39. 0 162
      src/views/backend/enterprise/smartscreen/soldscreen/popupForm.vue
  40. 0 168
      src/views/backend/enterprise/smartscreen/versions/index.vue
  41. 0 252
      src/views/backend/enterprise/smartscreen/versions/popupForm.vue
  42. 13 0
      src/views/backend/enterprise/store/employee/index.vue
  43. 134 0
      src/views/backend/enterprise/store/employee/popupForm.vue
  44. 93 0
      src/views/backend/enterprise/store/goods/index.vue
  45. 134 0
      src/views/backend/enterprise/store/goods/popupForm.vue
  46. 92 0
      src/views/backend/enterprise/store/storeManage/index.vue
  47. 132 0
      src/views/backend/enterprise/store/storeManage/popupForm.vue
  48. 0 73
      src/views/backend/enterprise/suggests/detail.vue
  49. 0 157
      src/views/backend/enterprise/suggests/feedback.vue
  50. 1 1
      src/views/backend/login.vue

+ 1 - 1
index.html

@@ -14,7 +14,7 @@
   <link rel="icon" href="/favicon.ico" />
   <link rel="icon" href="/favicon.ico" />
   <script src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.5.js"></script>
   <script src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.5.js"></script>
   <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
   <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
-  <title>智由家-企业级运营管理平台</title>
+  <title>车位销售运营管理平台</title>
 </head>
 </head>
 <body>
 <body>
   <div id="app"></div>
   <div id="app"></div>

+ 3 - 6
src/api/controllerUrls.ts

@@ -38,17 +38,12 @@ export const illustration = "/help/type/"; //帮助清单
 export const classification = "/help/"; //帮助分类
 export const classification = "/help/"; //帮助分类
 export const recommend = "/recommend/"; //好物
 export const recommend = "/recommend/"; //好物
 export const recommendPartner = "/recommend/partner/"; //好物伙伴
 export const recommendPartner = "/recommend/partner/"; //好物伙伴
-export const product = "/product/"; //智由屏
-export const productVersion = "/upgrade/version/"; //产品版本管理
-export const versionRelease = "/upgrade/version/release"; //产品版本发布
+
 export const member = "/member/"; //用户管理
 export const member = "/member/"; //用户管理
 export const feedback = "/feedback/"; //意见建议
 export const feedback = "/feedback/"; //意见建议
-export const equipment = "/equipment/"; //设备列表
 export const order = "/order/"; //订单管理
 export const order = "/order/"; //订单管理
 export const orderExpress = "/order/express/";
 export const orderExpress = "/order/express/";
-export const notice = "/notice/"; //消息管理
 export const statistics = "/statistics/"; //控制台数据统计
 export const statistics = "/statistics/"; //控制台数据统计
-export const orderRefund = "/order/refund/"; //退款申请
 export const moments = "/moments/"; //圈子管理
 export const moments = "/moments/"; //圈子管理
 export const dataScreen = "/statistics/view/"; //数据大屏用户管理
 export const dataScreen = "/statistics/view/"; //数据大屏用户管理
 
 
@@ -67,3 +62,5 @@ export const mapMark = "/map/mark/"; //图上标定车位
 
 
 export const buildingTree = "/common/tree";//获取楼宇位置树
 export const buildingTree = "/common/tree";//获取楼宇位置树
 export const coupon = "/coupon/"; //优惠卷
 export const coupon = "/coupon/"; //优惠卷
+export const store = "/store/"; //门店管理
+export const storeGoods = "/store/goods/"; //门店管理

+ 1 - 1
src/router/static.ts

@@ -27,7 +27,7 @@ const staticRoutes: Array<RouteRecordRaw> = [
         name: 'adminLogin',
         name: 'adminLogin',
         component: () => import('/@/views/backend/login.vue'),
         component: () => import('/@/views/backend/login.vue'),
         meta: {
         meta: {
-            title: '智由家-企业级运营管理平台', // 管理员登录页
+            title: '车位销售运营管理平台', // 管理员登录页
         },
         },
     },
     },
     {
     {

+ 0 - 77
src/views/backend/enterprise/coupons/Invitefriends/index.vue

@@ -1,77 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, recommend} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(coupon+'invite/'),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '邀请人', prop: 'memberName', align: 'center', operator: 'LIKE'},
-            {label: '被邀请人', prop: 'invitedMemberName', align: 'center', operator: 'LIKE'},
-            {label: '优惠券名称', prop: 'couponName', align: 'center', operator: false},
-            {label: '优惠金额', prop: 'discountAmount', align: 'center', operator: false},
-            {label: '注册日期', prop: 'invitedCreateTime', align: 'center', operator: false},
-            {
-                label: '是否使用',
-                prop: 'isUsed',
-                align: 'center',
-                render: 'tag',
-                operator: '=',
-                custom: {'未使用': 'success', '已使用': 'warning'},
-            }
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 182
src/views/backend/enterprise/coupons/Invitefriends/popupForm.vue

@@ -1,182 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="partnerName" label="名称">
-                        <el-input v-model="baTable.form.items!.partnerName" placeholder="请输入名称"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="partnerType" label="类型">
-                        <el-select v-model="baTable.form.items!.partnerType" placeholder="请选择类型"
-                                   style="width: 100%" @change="getPartnerList">
-                            <el-option label="官方" :value="0"/>
-                            <el-option label="伙伴" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="partnerStatus" label="状态">
-                        <el-select v-model="baTable.form.items!.partnerStatus" placeholder="请选择状态"
-                                   style="width: 100%"
-                                   clearable>
-                            <el-option label="正常" :value="0"/>
-                            <el-option label="暂停" :value="1"/>
-                            <el-option label="取消" :value="2"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="headPortrait" label="头像">
-                        <pictureUpload v-model:fileUrl="baTable.form.items!.headPortrait"></pictureUpload>
-
-                    </el-form-item>
-                    <div style="font-size: 10px;color: #92969a;margin-left: 150px">
-                        仅限jpg/png格式文件,大小不超过1MB
-                    </div>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {recommendPartner} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-onMounted(() => {
-    getDocList()
-})
-
-let docList = ref([])
-
-function getDocList() {
-    request.index(document, undefined, 'list').then(res => {
-        docList.value = res.data
-    })
-}
-
-let partnerList = ref([])
-let documentList = ref([])
-
-function getPartnerList(value: number) {
-    request.index(recommendPartner, {partnerType: value}, 'list').then(res => {
-        partnerList.value = res.data
-    })
-}
-
-function getInitData() {
-    setTimeout(() => {
-        request.index(document, {}, 'list').then(res => {
-            documentList.value = res.data
-        })
-    }, 500)
-}
-
-
-onMounted(() => {
-    getInitData()
-})
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    partnerName: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    partnerType: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    partnerStatus: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 83
src/views/backend/enterprise/coupons/usehistory/detail.vue

@@ -1,83 +0,0 @@
-<template>
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :model-value="showDialog"
-        @close="showDialog=false"
-        title="订单详情"
-    >
-        <div style="display: flex;align-items: center;height: 60px;margin: 20px 0">
-            <img :src="detailInfo.headPortrait" alt="#" :srcset="defaultAvatar"
-                 style="height: 60px;width: 60px;border-radius: 30px">
-            <h4 style="margin-left: 20px;color: #409eff">{{ detailInfo.memberName }}</h4>
-        </div>
-
-        <el-descriptions
-            title=""
-            direction="vertical"
-            :column="3"
-            border
-        >
-            <el-descriptions-item width="33%" label="会员姓名">{{detailData.memberName}}</el-descriptions-item>
-            <el-descriptions-item width="33%" label="会员编号" >{{detailData.memberId}}</el-descriptions-item>
-            <el-descriptions-item width="33%" label="优惠券名称">{{detailInfo.couponName}}</el-descriptions-item>
-            <el-descriptions-item label="订单号" >{{detailData.orderNumber}}</el-descriptions-item>
-            <el-descriptions-item label="支付渠道" >{{detailData.paymentChannelName}}</el-descriptions-item>
-            <el-descriptions-item label="购买总数" >{{detailData.purchaseCountTotal}}</el-descriptions-item>
-            <el-descriptions-item label="下单时间" >{{detailData.createTime}}</el-descriptions-item>
-            <el-descriptions-item label="优惠总金额" >{{detailData.discountAmountTotal}}</el-descriptions-item>
-        </el-descriptions>
-
-
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-
-import {nextTick, onMounted, ref} from "vue";
-import {useRoute, useRouter} from 'vue-router'
-import request from "/@/api/request";
-import {order} from "/@/api/controllerUrls";
-import defaultAvatar from '/@/assets/defaultAvatar.svg'
-
-const route = useRoute()
-const router = useRouter()
-
-
-let showDialog = ref(false)
-
-function openDialog(value: any) {
-    showDialog.value = true
-    nextTick(() => {
-        detailInfo.value = value
-        getData(value)
-    })
-}
-
-defineExpose({
-    openDialog,
-})
-
-
-let detailData = ref({})
-let detailInfo = ref({})
-
-function getData(value:any){
-    request.index(order,{id:value.usedOrderId},'detail').then(res=>{
-        detailData.value = res.data
-    })
-}
-
-
-</script>
-
-<style scoped>
-.row{
-    height: 40px;
-}
-
-.title{
-    /*background: #aacffc;*/
-    color: #2d8cf0;
-    width: 100px;
-}
-</style>

+ 0 - 129
src/views/backend/enterprise/coupons/usehistory/index.vue

@@ -1,129 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-
-        <detail ref="detailRef"></detail>
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, recommend} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import _ from "lodash";
-import useCurrentInstance from "/@/utils/useCurrentInstance";
-import detail from './detail.vue'
-
-//详情按钮
-let detailBtn: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'detail',
-        title: '详情',
-        text: '详情',
-        type: 'primary',
-        icon: '',
-        class: 'table-row-edit',
-        disabledTip: false,
-    },
-]
-
-detailBtn = _.concat(detailBtn, defaultOptButtons([]))
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(coupon+'history/'),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '标题', prop: 'couponName', align: 'left',operator: 'LIKE'},
-            {label: '优惠金额', prop: 'discountAmount', align: 'center', width: '150',operator: false},
-            {
-                label: '头像',
-                prop: 'headPortrait',
-                align: 'center',
-                width: '150',
-                render: 'image',
-                operator: false
-            },
-            {label: '用户名', prop: 'memberName', align: 'center', width: '150', operator: 'LIKE'},
-            {label: '订单号', prop: 'usedOrderId', align: 'center', width: '150', operator: 'LIKE'},
-            {label: '总金额', prop: 'actualAmountTotal', align: 'center', width: '150', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '200', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: detailBtn,
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'detail') {
-            infoButtonClick(data.row)
-        }
-    })
-
-})
-
-let detailRef = ref()
-
-/** 点击查看详情按钮响应 */
-const infoButtonClick = (row: TableRow) => {
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    detailRef.value.openDialog(rowClone)
-}
-
-
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 94
src/views/backend/enterprise/documentcenter/documents.vue

@@ -1,94 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {document} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(document),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '标题', prop: 'documentTitle', align: 'left', operator: 'LIKE'},
-            {
-                label: '类型',
-                prop: 'documentType',
-                align: 'center',
-                width: '150',
-                render: 'tag',
-                operator: '=',
-                replaceValue: {0: '好物推荐',1: '消息详情', 2: '产品介绍'},
-            },
-            {
-                label: '状态',
-                prop: 'bindStatus',
-                align: 'center',
-                width: '150',
-                render: 'tag',
-                operator: '=',
-                custom: { 1: 'success', 0: 'info' },
-                replaceValue:{1:'已关联',0:'未关联'}
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 161
src/views/backend/enterprise/documentcenter/popupForm.vue

@@ -1,161 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <!--            <div-->
-            <!--                class="ba-operate-form"-->
-            <!--                :class="'ba-' + baTable.form.operate + '-form'"-->
-            <!--                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"-->
-            <!--            >-->
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: 100%'"
-            >
-                <el-form
-                    ref="formRef"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    label-width="70px"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="documentTitle" label="标题">
-                                <el-input v-model="baTable.form.items!.documentTitle"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="documentType" label="类型">
-                                <el-select v-model="baTable.form.items!.documentType" placeholder="请选择文档类型"
-                                           style="width: 100%"
-                                           clearable>
-                                    <el-option label="好物推荐" :value="0"/>
-                                    <el-option label="消息详情" :value="1"/>
-                                    <el-option label="产品介绍" :value="2"/>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-form-item prop="documentContent" label="详情">
-                        <editor v-if="showEditor" v-model:modelValue="baTable.form.items!.documentContent"></editor>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch, nextTick} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-watch(() => baTable.form.operate, (newV) => {
-    if (newV == 'add') {
-        baTable.form.items!.documentContent = ''
-        showEditor.value = false
-        nextTick(() => {
-            showEditor.value = true
-        })
-    }
-})
-
-let showEditor = ref(true)
-
-onMounted(() => {
-
-})
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    documentTitle: [
-        {
-            required: true,
-            message: '请输入标题',
-            trigger: 'blur',
-        },
-    ],
-    documentType: [
-        {
-            required: true,
-            message: '请选择文档类型',
-            trigger: 'blur',
-        },
-    ],
-    documentContent: [
-        {
-            required: true,
-            message: '请输入详情',
-            trigger: 'blur',
-        },
-    ],
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 84
src/views/backend/enterprise/helpcenter/classification/index.vue

@@ -1,84 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, document, illustration} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(illustration),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '标题', prop: 'value', align: 'left', operator: 'LIKE'},
-            {
-                label: '状态',
-                prop: 'status',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                custom: {0: 'success', 1: 'info'},
-                replaceValue: {0: '启用', 1: '停用'}
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '200', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 138
src/views/backend/enterprise/helpcenter/classification/popupForm.vue

@@ -1,138 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="value" label="标题">
-                        <el-input v-model="baTable.form.items!.value"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="status" label="状态">
-                        <el-select v-model="baTable.form.items.status"
-                                   style="width: 100%">
-                            <el-option label="启用" :value="'0'"/>
-                            <el-option label="停用" :value="'1'"/>
-                        </el-select>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-onMounted(() => {
-    getDocList()
-})
-
-let docList = ref([])
-
-function getDocList() {
-    request.index(document, undefined, 'list').then(res => {
-        docList.value = res.data
-    })
-}
-
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    value: [
-        {
-            required: true,
-            message: '请输入标题',
-            trigger: 'blur',
-        },
-    ],
-    status: [
-        {
-            required: true,
-            message: '请选择场景',
-            trigger: 'blur',
-        },
-    ],
-
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 77
src/views/backend/enterprise/helpcenter/illustration/index.vue

@@ -1,77 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, classification, document} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(classification),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '标题', prop: 'helpTitle', align: 'left', operator: 'LIKE'},
-            {label: '分类',prop: 'typeName',align: 'left',operator: 'LIKE'},
-            {label: '浏览量',prop: 'viewCount',align: 'center',width: '120',operator: false},
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: 'LIKE'},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '200', operator: 'LIKE'},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 145
src/views/backend/enterprise/helpcenter/illustration/popupForm.vue

@@ -1,145 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="helpTitle" label="标题">
-                        <el-input v-model="baTable.form.items!.helpTitle"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="typeId" label="分类">
-                        <el-select v-model="baTable.form.items!.typeId" placeholder="请选择场景"
-                                   style="width: 100%"
-                                   clearable>
-                            <el-option v-for="item in helpTypeList" :label="item.value" :value="item.id"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="helpContent" label="描述">
-                        <editor v-model:modelValue="baTable.form.items!.helpContent"></editor>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, classification, illustration, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-onMounted(() => {
-    getDocList()
-})
-
-let docList = ref([])
-function getDocList() {
-    request.index(document, undefined, 'list').then(res => {
-        docList.value = res.data
-    })
-}
-
-
-let helpTypeList = ref([])
-function getHelpTypeList(){
-    request.index(illustration,{},'list').then(res=>{
-        helpTypeList.value = res.data
-    })
-}
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    helpTitle: [
-        {
-            required: true,
-            message: '请输入标题',
-            trigger: 'blur',
-        },
-    ],
-    typeId: [
-        {
-            required: true,
-            message: '请选择场景',
-            trigger: 'blur',
-        },
-    ],
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 53
src/views/backend/enterprise/legalinstrument/privacypolicy.vue

@@ -1,53 +0,0 @@
-<template>
-  <div class="default-main">
-    <el-card>
-      <el-button type="primary" @click="save" v-if="auth('edit')">保存</el-button>
-      <editor v-loading="datas.loading" :disable="!auth('edit')" style="margin-top: 20px" v-model:modelValue="agreementContent" :height="(config.layout.mainHeight-150)+'px'">
-      </editor>
-    </el-card>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { onMounted, reactive, ref, watch } from 'vue'
-import editor from '/@/components/editor/index.vue'
-import request from '/@/api/request'
-import { sysConfig } from '/@/api/controllerUrls'
-import { ElNotification } from 'element-plus/es'
-import { auth } from '/@/utils/common'
-import { useConfig } from '/@/stores/config'
-const config = useConfig()
-let agreementContent = ref('<p></p>')
-
-const datas=reactive({
-
-loading:false
-
-})
-
-onMounted(() => {
-    getData()
-})
-
-function getData() {
-    datas.loading=true
-    request.index(sysConfig, { configName: 'privacyAgreement' }, 'edit').then((res: any) => {
-        agreementContent.value = res.data.configValue.agreementContent
-        datas.loading=false
-    })
-}
-
-function save() {
-    request
-        .edit(sysConfig, {
-            configName: 'privacyAgreement',
-            configValue: { agreementContent: agreementContent.value },
-        })
-        .then((res: any) => {
-            ElNotification({ type: 'success', message: res.msg })
-        })
-}
-</script>
-
-<style scoped>
-</style>

+ 0 - 56
src/views/backend/enterprise/legalinstrument/useragreement.vue

@@ -1,56 +0,0 @@
-<template>
-    <div class="default-main">
-        <el-card >
-            <el-button type="primary" @click="save" v-if="auth('edit')">保存</el-button>
-            <editor v-loading="datas.loading" :disable="!auth('edit')" style="margin-top: 20px" v-model:modelValue="agreementContent" :height="(config.layout.mainHeight-150)+'px'"></editor>
-        </el-card>
-    </div>
-</template>
-
-<script setup lang="ts">
-import {onMounted, reactive, ref, watch} from "vue";
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {sysConfig} from "/@/api/controllerUrls";
-import {ElNotification} from "element-plus/es";
-import {auth} from '/@/utils/common'
-import { useConfig } from "/@/stores/config";
-const config = useConfig()
-let agreementContent = ref('<p></p>')
-
-const datas=reactive({
-
-    loading:false
-
-})
-
-
-onMounted(() => {
-    getData()
-
-})
-
-
-function getData() {
-    datas.loading=true
-    request.index(sysConfig, {configName: 'userAgreement'}, 'edit').then((res: any) => {
-        agreementContent.value = res.data.configValue.agreementContent
-        datas.loading=false
-    })
-}
-
-
-function save() {
-    request.edit(sysConfig, {
-        configName: 'userAgreement',
-        configValue: {agreementContent: agreementContent.value}
-    }).then((res: any) => {
-        ElNotification({type: 'success', message: res.msg,})
-    })
-}
-
-</script>
-
-<style scoped>
-
-</style>

+ 1 - 1
src/views/backend/enterprise/members/factionalism/index.vue

@@ -25,7 +25,7 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import _ from 'lodash'
 import _ from 'lodash'
 import {ref, onMounted, provide} from 'vue'
 import {ref, onMounted, provide} from 'vue'
-import {moments, order, orderRefund} from '/@/api/controllerUrls'
+import {moments} from '/@/api/controllerUrls'
 import Table from '/@/components/table/index.vue'
 import Table from '/@/components/table/index.vue'
 import TableHeader from '/@/components/table/header/index.vue'
 import TableHeader from '/@/components/table/header/index.vue'
 import {useRouter} from 'vue-router'
 import {useRouter} from 'vue-router'

+ 0 - 96
src/views/backend/enterprise/messagecenter/notices.vue

@@ -1,96 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, notice, recommend} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(notice),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '标题', prop: 'noticeTitle', align: 'left', operator: 'LIKE'},
-            {label: '简述', prop: 'noticeContent', align: 'left', operator: false},
-            {
-                label: '类型',
-                prop: 'noticeType',
-                align: 'center',
-                width: '150',
-                render: 'tag',
-                operator: '=',
-                replaceValue: {0: '系统消息', 1: '平台消息'}
-            },
-            {label: '已读', prop: 'readCount', align: 'center', width: '150', operator: false},
-            {
-                label: '发布',
-                prop: 'isRelease',
-                align: 'center',
-                width: '150',
-                render: 'tag',
-                operator: '=',
-                custom: {1: 'success', 0: 'info'},
-                replaceValue: {1: '是', 0: '否'}
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 187
src/views/backend/enterprise/messagecenter/popupForm.vue

@@ -1,187 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="noticeTitle" label="标题">
-                        <el-input v-model="baTable.form.items!.noticeTitle" placeholder="请输入名称"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="noticeContent" label="简述">
-                        <el-input type="textarea" rows="5" v-model="baTable.form.items!.noticeContent"
-                                  placeholder="请输入简述"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="noticeType" label="类型">
-                        <el-select v-model="baTable.form.items!.noticeType" placeholder="请选择类型"
-                                   style="width: 100%">
-                            <el-option label="系统消息" :value="0"/>
-                            <el-option label="平台消息" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="documentId" label="详情">
-                        <el-select v-model="baTable.form.items!.documentId" placeholder="请选择详情"
-                                   style="width: 100%">
-                            <el-option v-for="item in documentList" :label="item.documentTitle" :value="item.id"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="isRelease" label="发布">
-                        <el-select v-model="baTable.form.items!.isRelease" placeholder="请选择状态"
-                                   style="width: 100%"
-                                   clearable>
-                            <el-option label="否" :value="0"/>
-                            <el-option label="是" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {recommendPartner} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-onMounted(() => {
-    getDocList()
-    getInitData()
-})
-
-let docList = ref([])
-
-function getDocList() {
-    request.index(document, undefined, 'list').then(res => {
-        docList.value = res.data
-    })
-}
-
-let documentList = ref([])
-
-function getInitData() {
-    setTimeout(() => {
-        request.index(document, {documentType: 1}, 'list').then(res => {
-            documentList.value = res.data
-        })
-    }, 500)
-}
-
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    noticeTitle: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    noticeType: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    documentId: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    noticeContent: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    isRelease: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 228
src/views/backend/enterprise/orders/aftersale/auditDialog.vue

@@ -1,228 +0,0 @@
-<template>
-  <el-dialog v-model="showDialog" title="退款审核" :close-on-click-modal="false" @close="closeDialog">
-    <h5>订单信息</h5>
-    <el-descriptions class="margin-top" direction="vertical" :column="4" border style="margin-top: 10px">
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">会员姓名</div>
-        </template>
-        {{ orderData.memberName }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">收货人电话</div>
-        </template>
-        {{ orderData.deliveryMobile }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">支付渠道</div>
-        </template>
-        <el-tag>{{ orderData.paymentChannelName }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">实际支付总金额</div>
-        </template>
-        {{ orderData.actualAmountTotal }}
-      </el-descriptions-item>
-
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">订单号码</div>
-        </template>
-        {{ orderData.orderNumber }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">订单状态</div>
-        </template>
-        <el-tag>{{ orderData.orderStatusName }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">购买总数</div>
-        </template>
-        {{ orderData.purchaseCountTotal }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">优惠总金额</div>
-        </template>
-        {{ orderData.discountAmountTotal }}
-      </el-descriptions-item>
-    </el-descriptions>
-
-    <h5 style="margin-top: 30px;margin-bottom: 10px">审核情况</h5>
-    <el-form :model="formData" ref="formRef" label-width="110px" :rules="rules" v-if="data.auditStatus==0">
-      <el-row>
-
-        <el-col :span="12">
-          <el-form-item prop="auditAmount" label="审核金额">
-            <el-input type="number" v-model="formData.auditAmount"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item prop="refundChannel" label="退款渠道">
-            <el-select style="width: 100%" v-model="formData.refundChannel">
-              <el-option label="现金" :value="0"></el-option>
-              <el-option label="支付宝" :value="1"></el-option>
-              <el-option label="微信" :value="2"></el-option>
-              <el-option label="银联" :value="3"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-
-        <el-col :span="24">
-          <el-form-item prop="refundOrderNumber" label="退款交易号">
-            <el-input v-model="formData.refundOrderNumber"></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-form-item prop="auditRemark" label="审核备注">
-        <el-input type="textarea" v-model="formData.auditRemark"></el-input>
-      </el-form-item>
-    </el-form>
-
-    <el-descriptions v-else class="margin-top" direction="vertical" :column="4" border style="margin-top: 10px">
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">审核状态</div>
-        </template>
-        <el-tag>{{ data.auditStatusName }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">审核金额</div>
-        </template>
-        {{ data.auditAmount }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">审核人</div>
-        </template>
-        {{ data.auditUserName }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">退款状态</div>
-        </template>
-        <el-tag>{{ data.refundStatusName }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">退款操作人
-          </div>
-        </template>
-        {{ data.refundUserName }}
-      </el-descriptions-item>
-      <el-descriptions-item width="25%">
-        <template #label>
-          <div class="cell-item">退款渠道</div>
-        </template>
-        {{ data.refundChannelName }}
-      </el-descriptions-item>
-      <el-descriptions-item :span="2">
-        <template #label>
-          <div class="cell-item">退款交易号
-          </div>
-        </template>
-        {{ data.refundOrderNumber }}
-      </el-descriptions-item>
-      <el-descriptions-item span="4">
-        <template #label>
-          <div class="cell-item">备注
-          </div>
-        </template>
-        {{ data.auditRemark }}
-      </el-descriptions-item>
-    </el-descriptions>
-    <template #footer>
-      <el-button @click="closeDialog()">{{ data.auditStatus == 0 ? '取消' : '关闭' }}</el-button>
-      <el-button v-if="data.auditStatus==0" type="danger" @click="subForm">提交</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts">
-import { nextTick, ref } from 'vue'
-import request from '/@/api/request'
-import { order, orderRefund } from '/@/api/controllerUrls'
-
-let data = ref<any>({})
-
-//控制对话框
-let showDialog = ref(false)
-//向父容器暴露方法
-defineExpose({
-    open,
-})
-
-//打开对话框并初始化数据
-function open(row: any) {
-    showDialog.value = true
-    data.value = row
-    getOrderInfo()
-}
-
-let emit = defineEmits(['close'])
-
-function closeDialog() {
-    showDialog.value = false
-    emit('close')
-}
-
-//订单详情
-let orderData = ref<any>({})
-
-//获取订单信息
-function getOrderInfo() {
-    request.index(order, { id: data.value.orderId }, 'detail').then((res) => {
-        orderData.value = res.data
-        formData.value.auditAmount = orderData.value.actualAmountTotal
-    })
-}
-
-let formData = ref<any>({
-    auditAmount: null,
-    refundChannel: null,
-    refundOrderNumber: '',
-    auditRemark: '',
-    auditStatus: 1,
-    refundStatus: 1,
-})
-
-function validators(rule: any, val: any, callback: Function) {
-    if (formData.value.refundChannel > 0 && formData.value.refundOrderNumber == '') {
-        return callback(new Error('非现金渠道,请输入退款订单号码'))
-    }
-    return callback()
-}
-
-let rules = ref({
-    auditStatus: [{ required: true, message: '请选择审核状态', trigger: 'blur' }],
-    auditAmount: [{ required: true, message: '请输入审核金额', trigger: 'blur' }],
-    refundStatus: [{ required: true, message: '请选择退款状态', trigger: 'blur' }],
-    refundChannel: [{ required: true, message: '请选择退款渠道', trigger: 'blur' }],
-    refundOrderNumber: [{ validator: validators, trigger: 'blur' }],
-})
-
-let formRef = ref()
-
-function subForm() {
-    formRef.value.validate((valid: any) => {
-        if (valid) {
-            request.edit(orderRefund, { id: data.value.id, entity: formData.value }, 'confirm').then((res: any) => {
-                if (res.code == 1) {
-                    closeDialog()
-                }
-            })
-        }
-    })
-}
-</script>
-
-<style scoped>
-</style>

+ 0 - 164
src/views/backend/enterprise/orders/aftersale/index.vue

@@ -1,164 +0,0 @@
-<template>
-    <div class="default-main ">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过订单号模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-
-        <auditDialog ref="dialogRef" @close="baTable.onTableHeaderAction('refresh', {loading: true})"></auditDialog>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import _ from 'lodash'
-import {ref, onMounted, provide} from 'vue'
-import {order, orderRefund} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {useRouter} from 'vue-router'
-import {defaultOptButtons} from '/@/components/table'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import useCurrentInstance from '/@/utils/useCurrentInstance'
-import {auth} from "/@/utils/common";
-import auditDialog from './auditDialog.vue'
-
-const router = useRouter()
-
-let auditBtn: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'audit',
-        title: '审核',
-        text: '审核',
-        type: 'warning',
-        icon: '',
-        class: 'table-row-edit',
-        disabledTip: false,
-    },
-]
-
-//根据权限增加按钮
-function optButtons() {
-    let newBtns = defaultOptButtons([])
-    if (auth('audit') == true) {
-        newBtns = _.concat(auditBtn, newBtns)
-    }
-    return newBtns
-}
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(orderRefund),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {label: '会员姓名', prop: 'memberName', align: 'center', width: 120, operator: false},
-            {label: '订单编号', prop: 'orderNumber' ,"min-width":'180px', align: 'left', operator: 'LIKE'},
-            {label: '退款原因', prop: 'refundReason',"min-width":'180px', align: 'left', operator: false},
-            {label: '申请退款金额', prop: 'requestAmount', align: 'center', width: 120, operator: false},
-            {
-                label: '退款类型',
-                prop: 'refundType',
-                align: 'center',
-                render: 'tag',
-                operator: '=',
-                width: 120,
-                custom: {0: '', 1: '', 2: '', 3: 'success', 4: 'warning', 5: 'info', 6: 'info'},
-                replaceValue: {0: '全额退款', 1: '部分退款',},
-            },
-            {
-                label: '退款状态',
-                prop: 'refundStatus',
-                align: 'center',
-                render: 'tag',
-                operator: '=',
-                width: 120,
-                custom: {0: 'warning', 1: 'info'},
-                replaceValue: {0: '待退款', 1: '已退款',},
-            },
-            {label: '退款金额', prop: 'auditAmount', align: 'center', width: 120, operator: false},
-            {
-                label: '审核状态',
-                prop: 'auditStatus',
-                align: 'center',
-                render: 'tag',
-                operator: '=',
-                width: 120,
-                custom: {0: 'warning', 1: 'success', 2: 'info'},
-                replaceValue: {0: '待审核', 1: '审核通过', 2: '审核驳回',},
-            },
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: 120,
-                render: 'buttons',
-                buttons: optButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {
-
-        },
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-baTable.mount()
-baTable.getIndex()
-
-
-onMounted(() => {
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'audit') {
-            buttonClick(data.row)
-        }
-    })
-})
-
-let dialogRef = ref()
-
-/** 点击查看详情按钮响应 */
-const buttonClick = (row: TableRow) => {
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    dialogRef.value.open(rowClone)
-}
-
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 86
src/views/backend/enterprise/orders/carrier/index.vue

@@ -1,86 +0,0 @@
-<template>
-    <div class="default-main ">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {orderExpress} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(orderExpress),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '名称', prop: 'expressName', align: 'left', operator: 'LIKE'},
-            {label: '类型', prop: 'expressTypeName', align: 'center', operator: false},
-            {
-                label: '状态',
-                prop: 'expressStatus',
-                align: 'center',
-                render: 'tag',
-                width: 100,
-                custom: { 0: 'success', 1: 'danger'},
-                replaceValue: { 0: '正常', 1: '停用'},
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 116
src/views/backend/enterprise/orders/carrier/popupForm.vue

@@ -1,116 +0,0 @@
-<template>
-  <!-- 对话框表单 -->
-  <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-    :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
-    width="30%"
-    >
-    <template #header>
-      <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-        {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-      </div>
-    </template>
-    <el-scrollbar v-loading="baTable.form.loading">
-      <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
-        style="width: calc(100% - 40px);margin-bottom: 40px;">
-        <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
-          label-position="right" :label-width="'80px'" :rules="rules"
-          v-if="!baTable.form.loading">
-          <el-form-item prop="expressName" label="名称">
-            <el-input v-model="baTable.form.items!.expressName" placeholder="请输入标题"></el-input>
-          </el-form-item>
-          <el-form-item prop="expressType" label="类型">
-            <el-select v-model="baTable.form.items!.expressType" placeholder="请选择类型" style="width: 100%" clearable>
-              <el-option label="快递公司" :value='0' />
-              <el-option label="物流公司" :value='1' />
-            </el-select>
-          </el-form-item>
-          <el-form-item prop="expressStatus" label="状态">
-            <el-select v-model="baTable.form.items!.expressStatus" placeholder="请选择状态" style="width: 100%" clearable>
-              <el-option label="正常" :value='0' />
-              <el-option label="启用" :value='1' />
-            </el-select>
-          </el-form-item>
-        </el-form>
-      </div>
-    </el-scrollbar>
-    <template #footer>
-      <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-        <el-button @click="baTable.toggleForm('')">取消</el-button>
-        <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
-          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-        </el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, inject } from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import type { ElForm, FormItemRule } from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import { orderExpress } from '/@/api/controllerUrls'
-import { ElNotification } from 'element-plus/es'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    expressName: [
-        {
-            required: true,
-            message: '请输入名称',
-            trigger: 'blur',
-        },
-    ],
-    expressType: [
-        {
-            required: true,
-            message: '请选择类型',
-            trigger: 'blur',
-        },
-    ],
-    expressStatus: [
-        {
-            required: true,
-            message: '请选择状态',
-            trigger: 'blur',
-        },
-    ],
-})
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 647
src/views/backend/enterprise/orders/ordermanagement/detail.vue

@@ -1,647 +0,0 @@
-<template>
-  <div class="flex column">
-    <div
-      style="padding-left: 10px;padding-bottom: 10px;position: fixed;z-index: 9;width: 100%;background-color: #f5f5f5;margin-left: 10px;">
-      <el-page-header @back="backFn">
-        <template #content>
-          <span class="text-large font-600 mr-3">订单详情</span>
-        </template>
-      </el-page-header>
-    </div>
-    <div class="default-main flex column">
-      <div class="mt-60">
-        <el-steps align-center :active="datas.info.orderStatus+1" finish-status="success">
-          <el-step :title="item.operateTypeName" :description="item.createTime"
-            v-for="(item,index) in datas.info.operateList" :key="index" />
-        </el-steps>
-      </div>
-
-      <div class="mt-50">
-        <el-card class="box-card" shadow="never" style="width:100%">
-          <template #header>
-            <div class="card-header">
-              <span style=" font-weight:bold ">基本信息</span>
-              <el-button class="button" type="primary" @click="onEditOrder">编辑</el-button>
-            </div>
-          </template>
-          <div>
-            <el-descriptions direction="vertical" :column="6" border>
-              <el-descriptions-item label="订单编号">{{datas.info.orderNumber}}</el-descriptions-item>
-              <el-descriptions-item label="商品数量">{{datas.info.purchaseCountTotal}}件</el-descriptions-item>
-              <el-descriptions-item label="优惠金额">{{datas.info.discountAmountTotal}} <span class="ml-5">
-                  <el-link type="primary" @click="onGetCouponDetail" v-if="datas.info.discountAmountTotal>0">查看
-                  </el-link>
-                </span></el-descriptions-item>
-              <el-descriptions-item label="合计金额">{{datas.info.payableAmountTotal}}</el-descriptions-item>
-              <el-descriptions-item label="实付金额">{{datas.info.actualAmountTotal}}</el-descriptions-item>
-              <el-descriptions-item label="支付方式">{{datas.info.paymentChannelName}}</el-descriptions-item>
-              <el-descriptions-item label="交易号">{{datas.info.paymentOrderNumber}}</el-descriptions-item>
-              <el-descriptions-item label="用户账号">{{datas.info.memberName}}</el-descriptions-item>
-              <el-descriptions-item label="联系电话">{{datas.info.memberMobile}}</el-descriptions-item>
-              <el-descriptions-item label="收货人">{{datas.info.deliveryName}}</el-descriptions-item>
-              <el-descriptions-item label="收货电话">{{datas.info.deliveryMobile}}</el-descriptions-item>
-              <el-descriptions-item label="收货地址">{{datas.info.deliveryAddress}}</el-descriptions-item>
-              <el-descriptions-item label="订单状态">
-                <el-tag class="ml-2" v-if="datas.info.orderStatus===0"> {{datas.info.orderStatusName}}</el-tag>
-                <el-tag class="ml-2" type="success" v-if="datas.info.orderStatus===1"> {{datas.info.orderStatusName}}
-                </el-tag>
-                <el-tag class="ml-2" type="warning" v-if="datas.info.orderStatus===2"> {{datas.info.orderStatusName}}
-                </el-tag>
-                <el-tag class="ml-2" type="info" v-if="datas.info.orderStatus===3"> {{datas.info.orderStatusName}}
-                </el-tag>
-              </el-descriptions-item>
-            </el-descriptions>
-          </div>
-        </el-card>
-      </div>
-      <div class="mt-20">
-        <el-card class="box-card" shadow="never" style="width:100%">
-          <template #header>
-            <div class="card-header">
-              <span style=" font-weight:bold ">商品详情</span>
-            </div>
-          </template>
-          <div>
-            <el-table :data="datas.info.orderDetailList" border style="width: 100%">
-              <el-table-column prop="productName" label="商品名称" />
-              <el-table-column prop="purchaseCount" label="数量" />
-              <el-table-column prop="sellingPrice" label="单价" />
-              <el-table-column prop="discountAmount" label="特惠价" />
-              <el-table-column prop="payableAmount" label="应付金额" />
-              <el-table-column prop="actualAmount" label="实付金额" />
-            </el-table>
-          </div>
-        </el-card>
-      </div>
-      <div class="mt-20">
-        <el-card class="box-card" shadow="never" style="width:100%">
-          <template #header>
-            <div class="card-header">
-              <span style=" font-weight:bold ">发货记录</span>
-              <el-button class="button" type="primary" @click="onSend(false)">发货</el-button>
-            </div>
-          </template>
-          <div>
-            <el-table :data="datas.sandRecordList" border style="width: 100%">
-              <el-table-column type="expand">
-                <template #default="props">
-                  <div style="padding:20px">
-                    <el-table :data="props.row.detailList">
-                      <el-table-column label="产品名称" prop="productName" />
-                      <el-table-column label="产品序列号" prop="productId" />
-                      <el-table-column label="生产日期" prop="productDate" />
-                    </el-table>
-                  </div>
-                </template>
-              </el-table-column>
-              <el-table-column prop="expressName" label="名称" width="180" />
-              <el-table-column prop="expressNumber" label="快递单号" width="180" />
-              <el-table-column prop="deliverTypeName" label="发货类型" width="180" />
-              <el-table-column prop="expressFee" label="快递费用" />
-              <el-table-column prop="expressStatusName" label="状态" />
-              <el-table-column align="center" label="操作" width="180">
-                <template #default="scope">
-                  <el-button @click="onEditExpress(scope.row)" :disabled="scope.row.expressStatus===1">编辑</el-button>
-                  <el-popover :visible="datas.sandForm.popoverVisible" placement="top" :width="200">
-                    <span style="padding:10px">您确定客户已签收了吗?</span>
-                    <div class="mt-10" style="text-align: right;">
-                      <el-button size="small" text @click="datas.sandForm.popoverVisible = false">取消</el-button>
-                      <el-button size="small" type="primary" @click="onSignIn(scope.row.id)">确定</el-button>
-                    </div>
-                    <template #reference>
-                      <el-button @click="datas.sandForm.popoverVisible = true" type="danger"
-                        :disabled="scope.row.expressStatus===1">签收</el-button>
-                    </template>
-                  </el-popover>
-
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </el-card>
-      </div>
-      <!-- <div class="mt-20">
-        <el-card class="box-card" shadow="never" style="width:100%">
-          <template #header>
-            <div class="card-header">
-              <span style=" font-weight:bold ">换货申请</span>
-            </div>
-          </template>
-          <div>
-            <el-table :data="datas.aftersaleList" border style="width: 100%">
-              <el-table-column prop="name" label="原因" />
-              <el-table-column prop="typeName" label="旧设备序列号" />
-              <el-table-column prop="oddNumbers" label="新设备序列号" />
-              <el-table-column prop="amount" label="快递" />
-              <el-table-column prop="amount" label="单号" />
-              <el-table-column align="center" label="操作" width="180">
-                <template #default="scope">
-                  <el-button @click="onSignIn(scope.row)">审核
-                  </el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </el-card>
-      </div> -->
-      <div class="mt-20">
-        <el-card class="box-card" shadow="never" style="width:100%">
-          <template #header>
-            <div class="card-header">
-              <span style=" font-weight:bold ">退款申请</span>
-            </div>
-          </template>
-          <div>
-            <el-table :data="datas.refundList.list" border style="width: 100%">
-              <el-table-column prop="refundReason" label="原因" />
-              <el-table-column prop="auditStatusName" label="状态" />
-              <el-table-column prop="createTime" label="创建日期" />
-            </el-table>
-          </div>
-        </el-card>
-      </div>
-    </div>
-    <div>
-      <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-        :model-value="datas.sandForm.dialogVisibleSend" @close="datas.sandForm.dialogVisibleSend=false">
-        <template #header>
-          <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-            发货登记
-          </div>
-        </template>
-        <el-scrollbar v-loading="datas.sandForm.loading">
-          <div class="ba-operate-form" :class="'ba-' + datas.sandForm.operate + '-form'"
-            style="width: calc(100% - 40px);margin-bottom: 40px;">
-            <el-form ref="formRefSend" @keyup.enter="onSubmit(formRefSend,1)" :model="datas.sandForm.items"
-              label-position="right" :label-width="'120px'" :rules="rulesSend" v-if="!datas.sandForm.loading">
-              <el-form-item prop="deliverType" label="类型">
-                <el-select v-model="datas.sandForm.items.deliverType" placeholder="请选择发货类型" style="width: 100%"
-                  clearable :disabled="datas.sandForm.isEdit">
-                  <el-option label="销售发货" value='0' />
-                  <el-option label="售后发货" value='1' />
-                </el-select>
-              </el-form-item>
-              <el-form-item prop="expressId" label="服务商">
-                <el-select v-model="datas.sandForm.items.expressId" placeholder="请选择服务商" style="width: 100%" clearable>
-                  <el-option :label="item.expressName" :value='item.id' v-for="(item,index) in datas.sandForm.list"
-                    :key="index" />
-                </el-select>
-              </el-form-item>
-              <el-form-item prop="expressNumber" label="单号">
-                <el-input v-model="datas.sandForm.items.expressNumber" placeholder="请输入单号"></el-input>
-              </el-form-item>
-              <el-form-item prop="expressFee" label="费用">
-                <el-input v-model="datas.sandForm.items.expressFee" placeholder="请输入费用" type="number"></el-input>
-              </el-form-item>
-              <el-form-item prop="deliverDetail" label="产品">
-                <div style="width: 100%;">
-                  <div class="flex justify-flex-end">
-                    <el-button size="small" class="mb-10" @click="datas.sandForm.innerVisible=true">添加
-                    </el-button>
-                  </div>
-                  <el-table :data="datas.sandForm.items.deliverDetail" border stripe
-                    style="width: 100%;font-size: 10px;">
-                    <el-table-column prop="productName" label="产品" />
-                    <el-table-column prop="serialNumber" label="序列号" />
-                    <el-table-column prop="productDate" label="生产日期" />
-                    <el-table-column fixed="right" label="操作" align="center">
-                      <template #default="scope">
-                        <el-button link type="primary" size="small" @click="onDelProduct(scope.serialNumber)">删除
-                        </el-button>
-                      </template>
-                    </el-table-column>
-                  </el-table>
-                </div>
-              </el-form-item>
-            </el-form>
-          </div>
-        </el-scrollbar>
-        <el-dialog v-model="datas.sandForm.innerVisible" width="30%" title="设备登记" append-to-body>
-          <div>
-            <el-form ref="formRefProduct" @keyup.enter="onSubmit(formRefProduct,2)" :model="datas.sandForm.productInfo"
-              label-position="right" :label-width="'90px'" :rules="rulesProduct" v-if="!datas.sandForm.loading">
-              <el-form-item prop="productId" label="产品名称">
-                <el-select v-model="datas.sandForm.productInfo.productId" placeholder="请选择购买的产品" style="width: 100%"
-                  clearable @change="onSelectProduct">
-                  <el-option :label="item.productName" :value='item.productId'
-                    v-for="(item,index) in datas.info.orderDetailList" :key="index" />
-                </el-select>
-              </el-form-item>
-              <el-form-item prop="serialNumber" label="序列号">
-                <el-input v-model="datas.sandForm.productInfo.serialNumber" placeholder="请输入序列号"></el-input>
-              </el-form-item>
-              <el-form-item prop="productDate" label="生产日期">
-                <el-date-picker v-model="datas.sandForm.productInfo.productDate" type="date" format="YYYY-MM-DD"
-                  value-format="YYYY-MM-DD" placeholder="选择生产日期" style="width:100%" />
-              </el-form-item>
-            </el-form>
-          </div>
-          <template #footer>
-            <span class="dialog-footer">
-              <el-button type="primary" @click="onSubmit(formRefProduct,2)">
-                确定
-              </el-button>
-            </span>
-          </template>
-        </el-dialog>
-        <template #footer>
-          <div :style="'width: calc(100% - ' + 90 / 1.8 + 'px)'">
-            <el-button @click="datas.sandForm.dialogVisibleSend=false">取消</el-button>
-            <el-button v-blur :loading="datas.sandForm.submitLoading" @click="onSubmit(formRefSend,1)" type="primary">
-              保存
-            </el-button>
-          </div>
-        </template>
-      </el-dialog>
-      <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-        :model-value="datas.orderForm.dialogVisibleOrder" @close="datas.orderForm.dialogVisibleOrder=false">
-        <template #header>
-          <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-            编辑订单
-          </div>
-        </template>
-        <el-scrollbar v-loading="datas.orderForm.loading">
-          <div class="ba-operate-form" :class="'ba-' + datas.orderForm.operate + '-form'"
-            style="width: calc(100% - 40px);margin-bottom: 40px;">
-            <el-form ref="formRefOrder" @keyup.enter="onSubmit(formRefSend,3)" :model="datas.orderForm.items"
-              label-position="right" :label-width="'120px'" :rules="rulesOrder" v-if="!datas.orderForm.loading">
-              <el-form-item prop="deliveryName" label="收货人">
-                <el-input v-model="datas.orderForm.items.deliveryName" placeholder="请输入收货人"></el-input>
-              </el-form-item>
-              <el-form-item prop="deliveryMobile" label="收货电话">
-                <el-input v-model="datas.orderForm.items.deliveryMobile" placeholder="请输入收货电话"></el-input>
-              </el-form-item>
-              <el-form-item prop="deliveryAddress" label="收货地址">
-                <el-input v-model="datas.orderForm.items.deliveryAddress" placeholder="请输入收货地址"></el-input>
-              </el-form-item>
-            </el-form>
-          </div>
-        </el-scrollbar>
-        <template #footer>
-          <div :style="'width: calc(100% - ' + 90 / 1.8 + 'px)'">
-            <el-button @click="datas.orderForm.dialogVisibleOrder=false">取消</el-button>
-            <el-button v-blur :loading="datas.orderForm.submitLoading" @click="onSubmit(formRefOrder,3)" type="primary">
-              保存
-            </el-button>
-          </div>
-        </template>
-      </el-dialog>
-      <el-dialog v-model="datas.dialogVisibleCoupon" title="优惠券信息" width="30%">
-        <div>
-          <el-descriptions direction="vertical" :column="2" border>
-            <el-descriptions-item label="名称">{{datas.couponInfo.couponName}}</el-descriptions-item>
-            <el-descriptions-item label="金额">{{datas.couponInfo.discountAmount}}</el-descriptions-item>
-            <el-descriptions-item label="获取场景" :span="2">{{datas.couponInfo.couponSourceName}}</el-descriptions-item>
-          </el-descriptions>
-        </div>
-        <template #footer>
-          <span class="dialog-footer">
-            <el-button @click="datas.dialogVisibleCoupon = false">取消</el-button>
-          </span>
-        </template>
-      </el-dialog>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ElForm, ElNotification, FormItemRule } from 'element-plus'
-import { onMounted, reactive, ref } from 'vue'
-import { useRouter } from 'vue-router'
-import {
-    detail,
-    editExpressInPost,
-    editOrderPost,
-    expressPost,
-    getAftersale,
-    getCouponDetail,
-    getExpressList,
-    sendRecord,
-    signInPost,
-} from '/@/api/backend/enterprise/order'
-import _ from 'lodash'
-import { info } from '/@/api/backend/enterprise/employee'
-const formRefSend = ref<InstanceType<typeof ElForm>>()
-const formRefOrder = ref<InstanceType<typeof ElForm>>()
-const formRefProduct = ref<InstanceType<typeof ElForm>>()
-
-let router = useRouter()
-let row = reactive(router.currentRoute.value.params)
-let datas = reactive({
-    info: {},
-    sandRecordList: [],
-    aftersaleList: [],
-    refundList: [],
-    couponInfo: {},
-    dialogVisibleCoupon: false,
-    orderForm: {
-        dialogVisibleOrder: false,
-        loading: false,
-        submitLoading:false,
-        operate: 'edit',
-        items: {
-            id:'',
-            deliveryAddress:'',
-            deliveryName:'',
-            deliveryMobile:''
-        },
-    },
-    sandForm: {
-        dialogVisibleSend: false,
-        innerVisible: false,
-        loading: false,
-        submitLoading: false,
-        operate: 'add',
-        productInfo: {},
-        popoverVisible: false,
-        isEdit: false,
-        list: [],
-        items: {
-            id: '',
-            expressId: '',
-            expressNumber: '',
-            expressFee: 0.0,
-            deliverType: '0',
-            deliverDetail: [],
-        },
-    },
-})
-
-const rulesSend: Partial<Record<string, FormItemRule[]>> = reactive({
-    expressId: [
-        {
-            required: true,
-            message: '请输入名称',
-            trigger: 'blur',
-        },
-    ],
-    expressNumber: [
-        {
-            required: true,
-            message: '请输入单号',
-            trigger: 'blur',
-        },
-    ],
-    expressFee: [
-        {
-            required: true,
-            message: '请输入运费',
-            trigger: 'blur',
-        },
-    ],
-    deliverType: [
-        {
-            required: true,
-            message: '请选择发货类型',
-            trigger: 'blur',
-        },
-    ],
-    deliverDetail: [
-        {
-            required: true,
-            message: '请添加发货设备',
-            trigger: 'blur',
-        },
-    ],
-})
-
-const rulesProduct: Partial<Record<string, FormItemRule[]>> = reactive({
-    productId: [
-        {
-            required: true,
-            message: '请选择产品',
-            trigger: 'blur',
-        },
-    ],
-    productDate: [
-        {
-            required: true,
-            message: '请选择生产日期',
-            trigger: 'blur',
-        },
-    ],
-    serialNumber: [
-        {
-            required: true,
-            message: '请输入序列号',
-            trigger: 'blur',
-        },
-    ],
-})
-
-const rulesOrder: Partial<Record<string, FormItemRule[]>> = reactive({
-    deliveryAddress: [
-        {
-            required: true,
-            message: '请输入收货地址',
-            trigger: 'blur',
-        },
-    ],
-    deliveryName: [
-        {
-            required: true,
-            message: '请选择收货人',
-            trigger: 'blur',
-        },
-    ],
-    deliveryMobile: [
-        {
-            required: true,
-            message: '请输入收货人联系电话',
-            trigger: 'blur',
-        },
-    ],
-})
-
-
-const getDetail = () => {
-    let param = {
-        id: row.id,
-    }
-    detail(param).then((res) => {
-        datas.info = res.data
-    })
-}
-
-const getSendRecord = () => {
-    let param = {
-        id: row.id,
-    }
-
-    sendRecord(param).then((res) => {
-        datas.sandRecordList = res.data
-    })
-}
-
-const getAftersaleList = (listType: any) => {
-    let param = {
-        id: row.id,
-        operateType: listType,
-    }
-    getAftersale(param).then((res) => {
-        if (listType === 2) {
-            datas.aftersaleList = res.data
-        } else {
-            datas.refundList = res.data
-        }
-    })
-}
-
-const getExpressSelects = (operateType: boolean) => {
-    getExpressList().then((res) => {
-        datas.sandForm.isEdit = operateType
-        datas.sandForm.list = res.data
-        datas.sandForm.dialogVisibleSend = true
-    })
-}
-
-const onSelectProduct = (val: any) => {
-    let product = datas.info.orderDetailList!.find((item: { productId: any }) => item.productId == val)
-    datas.sandForm.productInfo!.productName = product.productName
-}
-
-const onDelProduct = (val: any) => {
-    let index = datas.sandForm.items.deliverDetail.findIndex((item: { serialNumber: any }) => item.serialNumber == val)
-    datas.sandForm.items.deliverDetail.splice(index, 1)
-}
-
-const backFn = () => {
-    router.go(-1)
-}
-
-const onGetCouponDetail = () => {
-    let req = {
-        id: datas.info.memberCouponId,
-    }
-    getCouponDetail(req).then((res) => {
-        datas.couponInfo = res.data
-        datas.dialogVisibleCoupon = true
-    })
-}
-
-const onSend = (operateType: boolean) => {
-    getExpressSelects(operateType)
-}
-
-const onSignIn = (id: anyObj) => {
-    let req = {
-        id: id,
-    }
-
-    signInPost(req).then((res) => {
-        getDetail()
-        getSendRecord()
-        datas.sandForm.popoverVisible = false
-    })
-}
-
-const onEditOrder=()=>{
-    datas.orderForm.items.id=datas.info.id
-    datas.orderForm.items.deliveryAddress=datas.info.deliveryAddress
-    datas.orderForm.items.deliveryName=datas.info.deliveryName
-    datas.orderForm.items.deliveryMobile=datas.info.deliveryMobile
-    datas.orderForm.dialogVisibleOrder=true
-}
-
-const onEditExpress = (row: anyObj) => {
-    datas.sandForm.items.expressId = row.expressId
-    datas.sandForm.items.expressId = row.expressId
-    datas.sandForm.items.expressNumber = row.expressNumber
-    datas.sandForm.items.expressFee = row.expressFee
-    datas.sandForm.items.deliverType = row.deliverType + ''
-    datas.sandForm.items.deliverDetail = row.detailList
-    datas.sandForm.items.expressId = row.expressId
-    datas.sandForm.items.id = row.id
-    getExpressSelects(true)
-}
-
-const onSubmit = (formEl: InstanceType<typeof ElForm> | undefined = undefined, formType: any) => {
-    if (formEl) {
-        formEl.validate((valid) => {
-            if (valid) {
-                if (formType === 2) {
-                    let dataClone = _.cloneDeep(datas.sandForm.productInfo)
-                    datas.sandForm.items.deliverDetail.push(dataClone)
-                    datas.sandForm.productInfo.productId = ''
-                    datas.sandForm.productInfo.serialNumber = ''
-                    datas.sandForm.productInfo.productDate = ''
-                    datas.sandForm.innerVisible = false
-                }
-
-                if (formType === 1) {
-                    datas.sandForm.submitLoading = true
-                    let req = {
-                        id: row.id,
-                        entity: datas.sandForm.items,
-                    }
-                    if (datas.sandForm.isEdit) {
-                        let editReq = {
-                            id: datas.sandForm.items.id,
-                            entity: datas.sandForm.items,
-                        }
-                        editExpressInPost(editReq).then((res) => {
-                            datas.sandForm.submitLoading = false
-                            datas.sandForm.items.expressId = ''
-                            datas.sandForm.items.expressNumber = ''
-                            datas.sandForm.items.expressFee = 0.0
-                            datas.sandForm.items.deliverType = ''
-                            datas.sandForm.items.deliverDetail = []
-                            datas.sandForm.items.id = ''
-                            datas.sandForm.dialogVisibleSend = false
-                            getDetail()
-                            getSendRecord()
-                        })
-                    } else {
-                        expressPost(req)
-                            .then((res) => {
-                                datas.sandForm.submitLoading = false
-                                datas.sandForm.items.expressId = ''
-                                datas.sandForm.items.expressNumber = ''
-                                datas.sandForm.items.expressFee = 0.0
-                                datas.sandForm.items.deliverType = ''
-                                datas.sandForm.items.deliverDetail = []
-                                datas.sandForm.items.id = ''
-                                datas.sandForm.dialogVisibleSend = false
-                                getDetail()
-                                getSendRecord()
-                            })
-                            .catch((msg) => {
-                                datas.sandForm.submitLoading = false
-                            })
-                    }
-                }
-
-                if(formType===3){
-
-                    datas.orderForm.submitLoading=true
-                    editOrderPost(datas.orderForm.items).then((res)=>{
-
-                        getDetail()
-                        datas.orderForm.submitLoading=false
-
-                    }).catch(()=>{
-                        datas.orderForm.submitLoading=false
-                    })
-
-
-                }
-            }
-        })
-    }
-}
-
-onMounted(() => {
-    getDetail()
-    getSendRecord()
-    // getAftersaleList(2)
-    getAftersaleList(0)
-})
-</script>
-
-<style scoped>
-.card-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-</style>

+ 0 - 141
src/views/backend/enterprise/orders/ordermanagement/index.vue

@@ -1,141 +0,0 @@
-<template>
-    <div class="default-main ">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import _ from 'lodash'
-import {ref, onMounted, provide} from 'vue'
-import {order} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {useRouter} from 'vue-router'
-import {defaultOptButtons} from '/@/components/table'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import useCurrentInstance from '/@/utils/useCurrentInstance'
-
-const router = useRouter()
-
-let optButtons: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'info',
-        title: '查看',
-        text: '',
-        type: 'primary',
-        icon: 'fa fa-search-plus',
-        class: 'table-row-edit',
-        disabledTip: false,
-
-    },
-]
-
-optButtons = _.concat(optButtons, defaultOptButtons([]))
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(order),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {label: '订单编号', prop: 'orderNumber',"min-width":'180px', align: 'left', operator: 'LIKE'},
-            {label: '商品数量', prop: 'purchaseCountTotal', align: 'center', operator: false},
-            {label: '优惠金额', prop: 'discountAmountTotal', align: 'center', operator: false},
-            {label: '合计金额', prop: 'payableAmountTotal', align: 'center', operator: false},
-            {label: '实付金额', prop: 'actualAmountTotal', align: 'center', operator: false},
-            {label: '支付方式', prop: 'paymentChannelName', align: 'center', operator: false},
-            {
-                label: '状态',
-                prop: 'orderStatus',
-                align: 'center',
-                render: 'tag',
-                operator:'=',
-                width: 100,
-                custom: {0: '', 1: '', 2: '', 3: 'success', 4: 'warning', 5: 'info', 6: 'info'},
-                replaceValue: {
-                    0: '待付款',
-                    1: '待发货',
-                    2: '待收货',
-                    3: '已完成',
-                    4: '已退款',
-                    5: '已售后',
-                    6: '已取消'
-                },
-            },
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: optButtons,
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-baTable.mount()
-baTable.getIndex()
-
-/** 点击查看详情按钮响应 */
-const infoButtonClick = (row: TableRow) => {
-
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    router.push({name: 'orders/ordermanagement/detail', params: rowClone})
-}
-
-
-onMounted(() => {
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'info') {
-            infoButtonClick(data.row)
-        }
-    })
-})
-
-
-</script>
-
-
-<style scoped lang="scss"></style>

+ 71 - 0
src/views/backend/enterprise/project/parking/detailDialog.vue

@@ -0,0 +1,71 @@
+<template>
+  <el-dialog title="车位详情" v-model="showDialog" width="800px">
+    <el-descriptions
+      class="margin-top"
+      :title="data.parkingNumber"
+      :column="3"
+      border
+    >
+      <el-descriptions-item width="250" label="区县">
+        {{ data.districtName }}
+      </el-descriptions-item>
+      <el-descriptions-item width="250" label="小区">
+        {{ data.communityName }}
+      </el-descriptions-item>
+      <el-descriptions-item width="250" label="车位类型">
+        {{ data.parkingType == 1 ? "车库" : "车位" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="面积">
+        {{ data.area }}
+      </el-descriptions-item>
+      <el-descriptions-item label="售卖方式">
+        <el-tag style="margin: 0px 3px" v-if="data.isSale==1">出售</el-tag>
+        <el-tag style="margin: 0px 3px" v-if="data.isHire==1">出租</el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item label="售价">
+        {{ data.isSale == 1 ? data.salePrice : "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="租金">
+        {{ data.isHire == 1 ? data.hirePrice : "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="销售情况">
+        <el-tag type="info" style="margin: 0px 3px" v-if="data.isSale==1&&data.saleStatus==1">已售</el-tag>
+        <el-tag type="success" style="margin: 0px 3px" v-if="data.isSale==1&&data.saleStatus==0">待售</el-tag>
+        <el-tag type="info" style="margin: 0px 3px" v-if="data.isHire==1&&data.hireStatus==1">已租</el-tag>
+        <el-tag type="success" style="margin: 0px 3px" v-if="data.isHire==1&&data.hireStatus==0">待租</el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item label="地图标记">
+        {{ data.mapId == 0 ? "未标记" : "已标记" }}
+      </el-descriptions-item>
+    </el-descriptions>
+    <parkingView style="margin-top: 20px" v-if="data.mapId !=0" :imgUrl="data.mapUrl" :mapId="data.mapId"
+                 :value="[data]"></parkingView>
+
+  </el-dialog>
+</template>
+
+<script setup>
+
+import { ref } from "vue";
+import parkingView from "./parkingView.vue";
+
+let showDialog = ref(false);
+
+
+defineExpose({
+  open
+});
+
+let data = ref({});
+
+function open(event) {
+  data.value = Object.assign({}, event);
+  data.value.mapUrl = data.value.mapUrl ? JSON.parse(data.value.mapUrl)[0] : "";
+  showDialog.value = true;
+}
+
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 9
src/views/backend/enterprise/project/parking/index.vue

@@ -22,39 +22,40 @@
         @click="parkingMapRef.open(buildingId)">车位绑定</el-button>
         @click="parkingMapRef.open(buildingId)">车位绑定</el-button>
     </div>
     </div>
 
 
-    <el-table :data="parkingData" style="margin-top: 10px" border>
+    <el-table :data="parkingData" style="margin-top: 10px" border @row-dblclick="detailDialogRef.open($event)">
+      <el-table-column prop="districtName" label="区县"></el-table-column>
+      <el-table-column prop="communityName" label="小区"></el-table-column>
       <el-table-column prop="parkingNumber" label="车位编号"></el-table-column>
       <el-table-column prop="parkingNumber" label="车位编号"></el-table-column>
-      <el-table-column prop="parkingType" label="车位类型">
+      <el-table-column prop="parkingType" label="车位类型" width="100">
         <template #default="{ row }">
         <template #default="{ row }">
           <span>{{ row.parkingType == 1 ? '车库' : '车位' }}</span>
           <span>{{ row.parkingType == 1 ? '车库' : '车位' }}</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column prop="area" label="车位面积"></el-table-column>
       <el-table-column label="售卖类型">
       <el-table-column label="售卖类型">
         <template #default="{ row }">
         <template #default="{ row }">
-          <el-tag v-if="row.isSale == 1" style="margin: 0 5px;">售</el-tag>
+          <el-tag v-if="row.isSale == 1" style="margin: 0 5px;">售</el-tag>
           <el-tag v-if="row.isHire == 1" style="margin: 0 5px;">出租</el-tag>
           <el-tag v-if="row.isHire == 1" style="margin: 0 5px;">出租</el-tag>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column label="销售金额">
+      <el-table-column label="销售金额" width="100">
         <template #default="{ row }">
         <template #default="{ row }">
           <span v-if="row.isSale == 1" style="margin: 0 5px;">{{ row.salePrice }}</span>
           <span v-if="row.isSale == 1" style="margin: 0 5px;">{{ row.salePrice }}</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column label="出售状态">
+      <el-table-column label="出售状态" width="100">
         <template #default="{ row }">
         <template #default="{ row }">
-          <el-tag v-if="row.isSale == 1" :type="row.saleStatus == 1 ? 'info' : ''" style="margin: 0 5px;">{{ row.saleStatus
+          <el-tag v-if="row.isSale == 1" :type="row.saleStatus == 1 ? 'info' : 'success'" style="margin: 0 5px;">{{ row.saleStatus
             == 1 ? '已售' : '待售' }}</el-tag>
             == 1 ? '已售' : '待售' }}</el-tag>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column label="租金">
+      <el-table-column label="租金" width="100">
         <template #default="{ row }">
         <template #default="{ row }">
           <span v-if="row.isHire == 1" style="margin: 0 5px;">{{ row.hirePrice }}</span>
           <span v-if="row.isHire == 1" style="margin: 0 5px;">{{ row.hirePrice }}</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="出租状态">
       <el-table-column label="出租状态">
         <template #default="{ row }">
         <template #default="{ row }">
-          <el-tag v-if="row.isHire == 1" :type="row.hireStatus == 1 ? 'info' : ''" style="margin: 0 5px;">{{ row.hireStatus
+          <el-tag v-if="row.isHire == 1" :type="row.hireStatus == 1 ? 'info' : 'success'" style="margin: 0 5px;">{{ row.hireStatus
             == 1 ? '已租' : '待租' }}</el-tag>
             == 1 ? '已租' : '待租' }}</el-tag>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
@@ -80,6 +81,7 @@
 
 
     <editDialog ref="editDialogRef" @close="getData"></editDialog>
     <editDialog ref="editDialogRef" @close="getData"></editDialog>
     <parkingMap ref="parkingMapRef"></parkingMap>
     <parkingMap ref="parkingMapRef"></parkingMap>
+    <detailDialog ref="detailDialogRef"></detailDialog>
 
 
   </div>
   </div>
 </template>
 </template>
@@ -92,6 +94,7 @@ import { building_list, community_list, district_list, parking } from "/@/api/co
 import { onMounted, ref } from "vue";
 import { onMounted, ref } from "vue";
 import editDialog from "./editDialog.vue"
 import editDialog from "./editDialog.vue"
 import parkingMap from "./parkingMap.vue"
 import parkingMap from "./parkingMap.vue"
+import detailDialog from "./detailDialog.vue"
 
 
 
 
 onMounted(() => {
 onMounted(() => {
@@ -103,6 +106,7 @@ let districtId = ref('')
 
 
 let editDialogRef = ref()
 let editDialogRef = ref()
 let parkingMapRef = ref()
 let parkingMapRef = ref()
+let detailDialogRef = ref()
 
 
 //区县列表
 //区县列表
 let districtList = ref([])
 let districtList = ref([])

+ 0 - 1
src/views/backend/enterprise/project/parking/mapSetting.vue

@@ -103,7 +103,6 @@ function setImgSize() {
   const m = document.getElementById("mapContainer");
   const m = document.getElementById("mapContainer");
   let img = new Image();
   let img = new Image();
   img.src = props.imgUrl;
   img.src = props.imgUrl;
-  console.log(img);
   width.value = m.clientWidth;
   width.value = m.clientWidth;
   height.value = m.clientWidth * (img.height / img.width);
   height.value = m.clientWidth * (img.height / img.width);
 }
 }

+ 228 - 0
src/views/backend/enterprise/project/parking/parkingView.vue

@@ -0,0 +1,228 @@
+<template>
+  <div>
+    <div style="margin-bottom: 10px">
+      <el-button type="primary" @click="setBigger">放大</el-button>
+      <el-button type="primary" @click="setSmaller">缩小</el-button>
+      <el-button type="primary" @click="resetSize">复位</el-button>
+    </div>
+    <div id="mapContainer" :style="{width:props.width,height:props.height}" @touchstart="moveOn" @touchmove="dragMove"
+         @mousedown="moveOn"
+         @mouseup="moveOff" @mousemove="dragMove" @mouseleave="moveOff" @wheel.prevent="wheel">
+      <div id="labelMap" :style="mapStyle">
+        <div :key="index" class="labelItem "
+             :style="{left: item.mapX+'px',top:item.mapY+'px',backgroundColor:setMarkStyle(item)?.backGround,width:item.mapSize+'px',height:item.mapSize+'px',fontSize:item.mapSize/3+'px'}"
+             v-for="(item,index) in props.value">
+          <span :style="{color:setMarkStyle(item)?.color}">{{ setMarkStyle(item)?.label }}</span>
+        </div>
+      </div>
+    </div>
+
+
+  </div>
+
+
+</template>
+<script setup>
+import { computed, onMounted, reactive, ref, watch } from "vue";
+import request from "/@/api/request";
+import { building, mapMark } from "/@/api/controllerUrls";
+import { ElMessageBox } from "element-plus";
+
+const props = defineProps({
+  imgUrl: {
+    type: String,
+    default: ""
+  },
+  mapId: {
+    type: String,
+    default: ""
+  },
+  width: {//外边框尺寸
+    type: String,
+    default: "100%"
+  },
+  height: {//外边框尺寸
+    type: String,
+    default: "400px"
+  },
+  value: {//标记点列表
+    type: Array,
+    default: []
+  }
+});
+
+
+//图片高度
+let height = ref(0);
+let width = ref(0);
+
+//图层样式
+let mapStyle = computed(() => {
+  return {
+    backgroundImage: `url(${props.imgUrl})`,
+    width: width.value + "px",
+    height: height.value + "px",
+    left: dragOption.x1 + "px",
+    top: dragOption.y1 + "px"
+  };
+});
+
+
+//图层实例
+let labelMap;
+
+onMounted(() => {
+  labelMap = document.getElementById("labelMap");
+  setImgSize();
+});
+
+
+//根据容器宽度和原始图片长宽比例设置图层高度
+function setImgSize() {
+  const m = document.getElementById("mapContainer");
+  let img = new Image();
+  img.src = props.imgUrl;
+  console.log(img);
+  setTimeout(()=>{
+    width.value = m.clientWidth;
+    height.value = m.clientWidth * (img.height / img.width);
+    console.log(width.value, height.value);
+  },0)
+
+}
+
+watch(() => props.imgUrl, () => {
+  console.log(props.imgUrl);
+  setImgSize();
+});
+
+
+
+//拖拽参数
+let dragOption = reactive({
+  x1: 0,
+  y1: 0,
+  x: 0,
+  y: 0,
+  status: false
+});
+
+
+//启动拖拽
+function moveOn(event) {
+  dragOption.status = true;
+  dragOption.x = event.clientX;
+  dragOption.y = event.clientY;
+}
+
+//关闭拖拽
+function moveOff() {
+  dragOption.status = false;
+}
+
+//拖拽
+function dragMove(event) {
+  if (dragOption.status) {
+    dragOption.x1 += event.clientX - dragOption.x;
+    dragOption.y1 += event.clientY - dragOption.y;
+
+    dragOption.x = event.clientX;
+    dragOption.y = event.clientY;
+
+  }
+
+}
+
+
+
+
+let statusList = [
+  { label: "可售", backGround: "#0bc933", color: "#000000" },
+  { label: "已售", backGround: "#fd0002", color: "#ffffff" },
+  { label: "待租", backGround: "#fde801", color: "#000000" },
+  { label: "已租", backGround: "#006efd", color: "#ffffff" }
+];
+
+function setMarkStyle(row) {
+  if (row.saleStatus == 1) {
+    return { label: "已售", backGround: "#fd0002", color: "#ffffff" };
+  } else if (row.isSale == 1) {
+    return { label: "待售", backGround: "#0bc933", color: "#000000" };
+  } else if (row.isHire == 1) {
+    return { label: "已租", backGround: "#006efd", color: "#ffffff" };
+  } else {
+    return { label: "待租", backGround: "#fde801", color: "#000000" };
+  }
+
+}
+
+
+
+
+
+let size = 1;
+
+//缩小
+function setSmaller() {
+  //边界条件
+  if (size < 0.3) return;
+  size -= 0.1;
+  labelMap.style.transform = `scale(${size})`;
+}
+
+
+//放大
+function setBigger() {
+  //边界条件
+  if (size > 3) return;
+  size += 0.1;
+  labelMap.style.transform = `scale(${size})`;
+}
+
+function resetSize() {
+  size = 1;
+  labelMap.style.transform = `scale(${size})`;
+  dragOption.x1 = 0;
+  dragOption.y1 = 0;
+}
+
+function wheel(event) {
+  if (event.wheelDeltaY > 0) {
+    setBigger();
+  } else {
+    setSmaller();
+  }
+}
+
+</script>
+<style scoped lang="scss">
+
+#mapContainer {
+  overflow: hidden;
+  border: #888888 1px solid;
+  position: relative
+}
+
+#labelMap {
+  position: absolute;
+  background-size: 100% 100%;
+  transition: transform 0.5s ease;
+  left: 0;
+  top: 0;
+}
+
+:deep(.labelItem) {
+  border-radius: 50%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: #ffffff;
+  font-size: 13px;
+  user-select: none;
+  position: absolute;
+  cursor: pointer;
+
+
+}
+
+</style>

+ 0 - 98
src/views/backend/enterprise/recommends/goodrelease/index.vue

@@ -1,98 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, recommend} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(recommend),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '推荐官', prop: 'partnerName', align: 'center', width: '100',operator: 'LIKE'},
-            {label: '类型',
-                prop: 'recommendType',
-                align: 'center',
-                width: '100',
-                render: 'tag',
-                operator: '=',
-                replaceValue:{0:'官方',1:'伙伴'}
-            },
-            {label: '标题', prop: 'recommendTitle', align: 'left','min-width':'100', operator: 'LIKE'},
-            {label: '简要描述', prop: 'briefDescription', align: 'left',"min-width":'200', operator: false},
-            {
-                label: '展示图',
-                prop: 'showedUrl',
-                align: 'center',
-                width: '120',
-                render: 'image',
-                operator: false
-            },
-            {label: '浏览量', prop: 'viewCount', align: 'center', width: '80', operator: false},
-            {label: '是否上架', prop: 'recommendStatus', align: 'center', width: '90',  render:'switch', operator: false,
-        },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '90', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {
-
-        },
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 67
src/views/backend/enterprise/recommends/goodrelease/jumpPathList.vue

@@ -1,67 +0,0 @@
-<template>
-    <div>
-        <div v-for="(item,index) in pathList" style="margin:3px 0" :key="index">
-            <el-select style="width: 90px" v-model="item!.platformType" @change="push">
-                <el-option label="京东" :value="0"></el-option>
-                <el-option label="天猫" :value="1"></el-option>
-                <el-option label="淘宝" :value="2"></el-option>
-            </el-select>
-            <el-input style="width: 350px;margin-left: 10px" v-model="item!.url" @change="push"></el-input>
-            <Icon name="el-icon-DocumentAdd" style="margin-left:10px;color: #2d8cf0;cursor: pointer" @click="add"></Icon>
-            <Icon name="el-icon-delete" style="margin-left:10px;color: red;cursor: pointer" @click="del(index)"></Icon>
-        </div>
-    </div>
-</template>
-
-<script setup lang="ts">
-
-
-import {onMounted, ref, watch} from "vue";
-
-const props = defineProps({
-    data: {
-        type: String,
-        default: ''
-    }
-})
-
-watch(
-    () => props.data,
-    (newVal) => {
-        if (props.data === '') {
-            pathList.value = [{platformType: 0, url: ''}]
-        }
-    }
-)
-
-const emit = defineEmits(['update:data'])
-
-let pathList = ref<Array<any>>([{platformType: 0, url: ''}])
-
-function add() {
-    pathList.value.push({platformType: null, url: ''})
-}
-
-function del(index: number) {
-    pathList.value.splice(index, 1)
-}
-
-function push() {
-    emit('update:data', JSON.stringify(pathList.value))
-}
-
-watch(pathList, () => {
-
-})
-
-onMounted(() => {
-    if (props.data && props.data != '') {
-        pathList.value = JSON.parse(props.data)
-    }
-})
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 221
src/views/backend/enterprise/recommends/goodrelease/popupForm.vue

@@ -1,221 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-        @open="onOpen"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="recommendType" label="好物类型">
-                        <el-select v-model="baTable.form.items!.recommendType" placeholder="请选择类型"
-                                   style="width: 100%">
-                            <el-option label="官方" :value="0"/>
-                            <el-option label="伙伴" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="partnerId" label="推荐方">
-                        <el-select v-model="baTable.form.items!.partnerId" placeholder="请选择推荐方"
-                                   style="width: 100%">
-                            <el-option v-for="item in partnerList" :label="item.partnerName" :value="item.id"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="recommendTitle" label="标题">
-                        <el-input v-model="baTable.form.items!.recommendTitle" placeholder="请输入标题"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="briefDescription" label="简要描述">
-                        <el-input type="textarea" rows="4" v-model="baTable.form.items!.briefDescription"
-                                  placeholder="请输入摘要描述"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="documentId" label="详情">
-                        <el-select v-model="baTable.form.items!.documentId" placeholder="请选择详情"
-                                   style="width: 100%">
-                            <el-option v-for="item in documentList" :label="item.documentTitle" :value="item.id"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="recommendStatus" label="状态">
-                        <el-select v-model="baTable.form.items!.recommendStatus" placeholder="请选择状态"
-                                   style="width: 100%"
-                                   clearable>
-                            <el-option label="上架" :value="0"/>
-                            <el-option label="下架" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="jumpPath" label="产品ID">
-                        <jumpPathList v-model:data="baTable.form.items!.jumpPath"></jumpPathList>
-                    </el-form-item>
-                    <el-form-item prop="showedUrl" label="展示画">
-                        <pictureUpload v-model:fileUrl="baTable.form.items!.showedUrl"></pictureUpload>
-                        <div style="font-size: 10px;color: #92969a">
-                            仅限jpg/png格式文件,大小不超过1MB
-                        </div>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {recommendPartner} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-import jumpPathList from './jumpPathList.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-
-function getDocList() {
-    request.index(document, {documentType: 0}, 'list').then(res => {
-        documentList.value = res.data
-    })
-}
-
-
-watch(
-    () => baTable.form.items!.recommendType,
-    (newVal) => {
-        getPartnerList(newVal)
-    }
-)
-
-let partnerList = ref([])
-let documentList = ref([])
-
-function getPartnerList(value: number) {
-    request.index(recommendPartner, {partnerType: value}, 'list').then(res => {
-        partnerList.value = res.data
-    })
-}
-
-const onOpen=()=>{
-
-    if(baTable.form.operate==='add'){
-
-        baTable.form.items!.showedUrl=''
-        baTable.form.items!.jumpPath=''
-
-
-    }
-
-}
-
-onMounted(() => {
-    getDocList()
-})
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    partnerId: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    recommendTitle: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    briefDescription: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    documentId: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    recommendStatus: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 99
src/views/backend/enterprise/recommends/partners/index.vue

@@ -1,99 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, recommendPartner} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(recommendPartner),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {
-                label: '头像',
-                prop: 'headPortrait',
-                align: 'center',
-                width: '200',
-                render: 'image',
-                operator: false
-            },
-            {label: '企业名称', prop: 'partnerName', align: 'center', operator: false},
-            {
-                label: '类型',
-                prop: 'partnerType',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                replaceValue:{0:'官方',1:'伙伴'}
-            },
-            {
-                label: '是否启用',
-                prop: 'partnerStatus',
-                align: 'center',
-                width: '120',
-                render: 'switch',
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '200', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 150
src/views/backend/enterprise/recommends/partners/popupForm.vue

@@ -1,150 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="partnerName" label="名称">
-                        <el-input v-model="baTable.form.items!.partnerName" placeholder="请输入名称"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="partnerType" label="类型">
-                        <el-select v-model="baTable.form.items!.partnerType" placeholder="请选择类型"
-                                   style="width: 100%" >
-                            <el-option label="官方" :value="0"/>
-                            <el-option label="伙伴" :value="1"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="partnerStatus" label="状态">
-                        <el-select v-model="baTable.form.items!.partnerStatus" placeholder="请选择状态"
-                                   style="width: 100%"
-                                   clearable>
-                            <el-option label="正常" :value="0"/>
-                            <el-option label="暂停" :value="1"/>
-                            <el-option label="取消" :value="2"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="headPortrait" label="头像">
-                        <pictureUpload v-model:fileUrl="baTable.form.items!.headPortrait"></pictureUpload>
-
-                    </el-form-item>
-                    <div style="font-size: 10px;color: #92969a;margin-left: 150px">
-                        仅限jpg/png格式文件,大小不超过1MB
-                    </div>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {recommendPartner} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    partnerName: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    partnerType: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-    partnerStatus: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 48
src/views/backend/enterprise/smartscreen/aftermarket/index.vue

@@ -1,48 +0,0 @@
-<template>
-    <div class="default-main ba-table-box" >
-        <el-card style="padding: 0 20px">
-            <div style="margin-bottom: 20px">
-                <el-button type="primary" :disabled="!auth('edit')" @click="saveDocument">保存</el-button>
-            </div>
-            <editor :disable="!auth('edit')" v-model:modelValue="document" :height="(config.layout.mainHeight-150)+'px'"></editor>
-        </el-card>
-
-    </div>
-</template>
-
-
-
-<script setup lang="ts">
-import editor from '/@/components/editor/index.vue'
-import {auth} from '/@/utils/common'
-import {onMounted, ref} from "vue";
-import request from "/@/api/request";
-import {sysConfig} from "/@/api/controllerUrls";
-import {ElNotification} from "element-plus/es";
-import { useConfig } from '/@/stores/config';
-const config = useConfig()
-let document = ref<String>('')
-
-onMounted(()=>{
-    getDocument()
-})
-
-function getDocument(){
-    request.index(sysConfig, {configName: 'afterSale'}, 'edit').then((res: any) => {
-        document.value = res.data.configValue.agreementContent
-    })
-}
-
-function saveDocument(){
-    request.edit(sysConfig, {
-        configName: 'afterSale',
-        configValue: {"agreementContent":document.value}
-    }).then((res: any) => {
-        ElNotification({type: 'success', message: res.msg,})
-    })
-}
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 88
src/views/backend/enterprise/smartscreen/goodinfo/index.vue

@@ -1,88 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, product} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(product),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {label: '展示图', prop: 'goodsPictureUrl', align: 'center', render:'image'},
-            {label: '产品名称', prop: 'productName', align: 'center', operator: 'LIKE'},
-            {label: '销售价格', prop: 'sellingPrice',align: 'center',  operator: false},
-            {label: '活动售价', prop: 'activityPrice', align: 'center', operator: false},
-            {label: '详情', prop: 'url', align: 'center', render:'url', target:'_blank',operator: false},
-            {
-                label: '产品状态',
-                prop: 'productStatus',
-                align: 'center',
-                render: 'tag',
-                operator:'=',
-                width: 100,
-                custom: { 0: 'success',1: 'warning',},
-                replaceValue: { 0: '在售', 1: '禁售'},
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: defaultOptButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-})
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 303
src/views/backend/enterprise/smartscreen/goodinfo/popupForm.vue

@@ -1,303 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
-               :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm">
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
-                 :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'">
-                <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
-                         label-position="right" :label-width="baTable.form.labelWidth + 'px'" :rules="rules"
-                         v-if="!baTable.form.loading">
-                    <el-form-item prop="productName" label="产品名称">
-                        <el-input v-model="baTable.form.items!.productName"></el-input>
-                    </el-form-item>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="sellingPrice" label="售价">
-                                <el-input type="number" style="width: 100%"
-                                          v-model="baTable.form.items!.sellingPrice"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="warrantyPeriod" label="保修周期">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.warrantyPeriod">
-                                    <el-option label="一年" :value="1"></el-option>
-                                    <el-option label="二年" :value="2"></el-option>
-                                    <el-option label="三年" :value="3"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="activityPrice" label="活动价">
-                                <el-input type="number" style="width: 100%"
-                                          v-model="baTable.form.items!.activityPrice"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="postageAmount" label="邮费">
-                                <el-input type="number" style="width: 100%"
-                                          v-model="baTable.form.items!.postageAmount"></el-input>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="documentId" label="商品详情">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.documentId">
-                                    <el-option v-for="item in documentList" :label="item.documentTitle"
-                                               :value="item.id"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="shareTitle" label="分享标题">
-                                <el-input v-model="baTable.form.items!.shareTitle"></el-input>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="productStatus" label="状态">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.productStatus">
-                                    <el-option label="在售" :value="0"></el-option>
-                                    <el-option label="停售" :value="1"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-form-item prop="shareIntroduction" label="分享简介">
-                        <el-input type="textarea" v-model="baTable.form.items!.shareIntroduction"></el-input>
-                    </el-form-item>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="showedUrl" label="首页图片">
-                                <pictureUpload :size="1000000"
-                                               v-model:fileUrl="baTable.form.items!.showedUrl"></pictureUpload>
-                                <div class="mt-5" style="font-size: 10px;color: #92969a;line-height: initial;">
-                                    图片控制在1MB以内,图片尺寸建议按照1:1比例设计
-                                </div>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="goodsPictureUrl" label="商品图片">
-                                <pictureUpload :size="1000000"
-                                               v-model:fileUrl="baTable.form.items!.goodsPictureUrl"></pictureUpload>
-                                <div class="mt-5" style="font-size: 10px;color: #92969a;line-height: initial;">
-                                    图片控制在1MB以内,图片尺寸建议按照1:1比例设计
-                                </div>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="sharePictureUrl" label="分享图片">
-                                <pictureUpload :size="1000000"
-                                               v-model:fileUrl="baTable.form.items!.sharePictureUrl"></pictureUpload>
-                                <div class="mt-5" style="font-size: 10px;color: #92969a;line-height: initial;">
-                                    图片控制在1MB以内,图片尺寸建议按照1:1比例设计
-                                </div>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                        </el-col>
-                    </el-row>
-                    <el-form-item prop="carouselPictureUrl" label="轮播图片">
-                        <pictureUploads v-if="rashItem" :limit="5"
-                                        v-model:fileUrl="baTable.form.items!.carouselPictureUrl"></pictureUploads>
-                        <div class="mt-5" style="font-size: 10px;color: #92969a;line-height: initial;">
-                            图片最多不超过5张,每张控制在1MB以内,图片尺寸建议按照4:3比例设计
-                        </div>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch, nextTick} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from '/@/api/request'
-import {ElNotification} from 'element-plus/es'
-import {document} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-import pictureUploads from '/@/components/pictureUpload/multiple.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-let documentList = ref([])
-
-function getDocumentList() {
-    setTimeout(() => {
-        request.index(document, {documentType: 2}, 'list').then((res) => {
-            documentList.value = res.data
-        })
-    }, 500)
-}
-
-onMounted(() => {
-    getDocumentList()
-})
-
-let rashItem = ref(true)
-watch(() => baTable.form.operate, (newV) => {
-    if (newV == 'add') {
-        rashItem.value = false
-        nextTick(() => {
-            rashItem.value = true
-        })
-    }
-})
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    productName: [
-        {
-            required: true,
-            message: '请输入名称',
-            trigger: 'blur',
-        },
-    ],
-    documentId: [
-        {
-            required: true,
-            message: '请选择详情',
-            trigger: 'blur',
-        },
-    ],
-    sellingPrice: [
-        {
-            required: true,
-            message: '请输入售价',
-            trigger: 'blur',
-        },
-    ],
-    activityPrice: [
-        {
-            required: true,
-            message: '请输入活动价',
-            trigger: 'blur',
-        },
-    ],
-    shareTitle: [
-        {
-            required: true,
-            message: '请输入分享标题',
-            trigger: 'blur',
-        },
-    ],
-    shareIntroduction: [
-        {
-            required: true,
-            message: '请输入分享简介',
-            trigger: 'blur',
-        },
-    ],
-    productStatus: [
-        {
-            required: true,
-            message: '请选择产品状态',
-            trigger: 'blur',
-        },
-    ],
-    warrantyPeriod: [
-        {
-            required: true,
-            message: '请选择保修周期',
-            trigger: 'blur',
-        },
-    ],
-    showedUrl: [
-        {
-            required: true,
-            message: '请上传首页图片',
-            trigger: 'blur',
-        },
-    ],
-    postageAmount: [
-        {
-            required: true,
-            message: '请输入邮费',
-            trigger: 'blur',
-        },
-    ],
-    sharePictureUrl: [
-        {
-            required: true,
-            message: '请上传分享图片',
-            trigger: 'blur',
-        },
-    ],
-    goodsPictureUrl: [
-        {
-            required: true,
-            message: '请上传商品图片',
-            trigger: 'blur',
-        },
-    ],
-    carouselPictureUrl: [
-        {
-            required: true,
-            message: '请上传轮播图片',
-            trigger: 'blur',
-        },
-    ],
-})
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 72
src/views/backend/enterprise/smartscreen/soldscreen/detail.vue

@@ -1,72 +0,0 @@
-<template>
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :model-value="showDialog"
-        @close="showDialog=false"
-        title="设备详情"
-    >
-        <div style="margin-top: 20px">
-            <el-descriptions
-                title=""
-                direction="vertical"
-                :column="3"
-                border
-            >
-                <el-descriptions-item width="33%" label="设备名称">{{ initData.productName }}</el-descriptions-item>
-                <el-descriptions-item width="33%" label="序列号">{{ initData.productId }}</el-descriptions-item>
-                <el-descriptions-item width="33%" label="批次"></el-descriptions-item>
-                <el-descriptions-item label="生产日期">{{ initData.createTime }}</el-descriptions-item>
-                <el-descriptions-item label="所在位置">{{ initData.areaName }}</el-descriptions-item>
-                <el-descriptions-item label="状态">{{ initData.equipmentStatusName }}</el-descriptions-item>
-            </el-descriptions>
-            <el-timeline style="margin-top: 30px">
-                <el-timeline-item
-                    v-for="(item, index) in detailData"
-                    :key="index"
-                    :timestamp="item.createTime"
-                    placement="top"
-                >
-                    <el-card>{{ item.resumeContent }}</el-card>
-
-                </el-timeline-item>
-            </el-timeline>
-        </div>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-
-
-import {nextTick, ref, toRaw} from "vue";
-import request from "/@/api/request";
-import {feedback, member, equipment} from "/@/api/controllerUrls";
-
-
-let detailData = ref({})
-let initData = ref({})
-let showDialog = ref(false)
-
-function openDialog(value: any) {
-    showDialog.value = true
-    initData.value = value
-    nextTick(() => {
-        getData(value)
-    })
-}
-
-function getData(value: any) {
-    request.index(equipment, {id: value.id}, 'detail').then(res => {
-        detailData.value = res.data.resumeList
-    })
-}
-
-
-defineExpose({
-    openDialog,
-})
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 150
src/views/backend/enterprise/smartscreen/soldscreen/index.vue

@@ -1,150 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <detail ref="detailRef"></detail>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, equipment, productVersion} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import {auth} from "/@/utils/common";
-import _ from "lodash";
-import useCurrentInstance from "/@/utils/useCurrentInstance";
-import detail from './detail.vue'
-import PopupForm from './popupForm.vue'
-
-//详情按钮
-let detailBtn: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'detail',
-        title: '详情',
-        text: '',
-        type: 'primary',
-        icon: 'el-icon-Tickets',
-        class: 'table-row-edit',
-        disabledTip: false,
-    },
-]
-
-//根据权限增加按钮
-function optButtons() {
-    let newBtns = defaultOptButtons(['edit', 'delete'])
-    if (auth('detail') == true) {
-        newBtns = _.concat(detailBtn, newBtns)
-    }
-    return newBtns
-}
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(equipment),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '设备名称', prop: 'productName', align: 'left', operator: 'LIKE'},
-            {label: '设备ID', prop: 'serialNumber', align: 'left', operator: false},
-            {label: '位置', prop: 'areaName', align: 'center', width: '150', operator: false},
-            {
-                label: '是否在线',
-                prop: 'isOnline',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator:false,
-                custom: {'是': 'success', '否': 'info'},
-            },
-            {
-                label: '状态',
-                prop: 'equipmentStatus',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                custom: {0: 'success', 1: 'warning', 2: 'info', 3: 'info'},
-                replaceValue: {0: '正常', 1: '退货', 2: '维修', 3: '库存'}
-            },
-            {label: '销售时间', prop: 'createTime', align: 'center', width: '200', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: optButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'detail') {
-            infoButtonClick(data.row)
-        }
-    })
-})
-
-
-let detailRef = ref()
-
-
-/** 点击查看详情按钮响应 */
-const infoButtonClick = (row: TableRow) => {
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    detailRef.value.openDialog(rowClone)
-}
-
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 162
src/views/backend/enterprise/smartscreen/soldscreen/popupForm.vue

@@ -1,162 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" >
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="serialNumber" label="设备序列号">
-                        <el-input v-model="baTable.form.items!.serialNumber" placeholder="请输入序列号"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="productId" label="产品编号">
-                        <el-select style="width: 100%" v-model="baTable.form.items!.productId" placeholder="请输入产品编号">
-                            <el-option v-for="item in productList" :label="item.productName" :value="item.id"></el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="batchNumber" label="批次号">
-                        <el-input v-model="baTable.form.items!.batchNumber" placeholder="请输入批次号"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="produceDate" label="生产日期">
-                        <el-date-picker v-model="baTable.form.items!.produceDate" format="YYYY-MM-DD"
-                                        value-format="YYYY-MM-DD" placeholder="请选择生产日期"
-                                        style="width: 100%"
-                        >
-                        </el-date-picker>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch, onActivated} from 'vue'
-
-import type baTableClass from '/@/utils/baTable'
-import {regularPassword, validatorAccount, validatorMobile} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {product} from '/@/api/controllerUrls'
-import pictureUpload from '/@/components/pictureUpload/index.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-watch(()=>baTable.form.operate,(n)=>{
-    if(n){
-        getProductList()
-    }
-})
-
-let productList = ref([])
-
-function getProductList() {
-    request.index(product, undefined, 'index').then(res => {
-        productList.value = res.data.list
-        console.log(res.data.list)
-    })
-}
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    serialNumber: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    productId: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    batchNumber: [
-        {
-            required: true,
-            message: '请输入',
-            trigger: 'blur',
-        },
-    ],
-    produceDate: [
-        {
-            required: true,
-            message: '请选择',
-            trigger: 'blur',
-        },
-    ],
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 0 - 168
src/views/backend/enterprise/smartscreen/versions/index.vue

@@ -1,168 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-        <!-- 表单 -->
-        <PopupForm ref="formRef"/>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, member, productVersion} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import PopupForm from './popupForm.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import {auth} from "/@/utils/common";
-import _ from "lodash";
-import useCurrentInstance from "/@/utils/useCurrentInstance";
-import {ElMessage, ElMessageBox} from "element-plus";
-import request from "/@/api/request";
-import {versionRelease} from "/@/api/controllerUrls"
-
-
-//发布按钮
-let releaseBtn: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'release',
-        title: '发布',
-        text: '',
-        type: 'success',
-        icon: 'el-icon-Promotion',
-        class: '',
-        disabledTip: false,
-    },
-]
-
-//根据权限增加按钮
-function optButtons() {
-    let newBtns = defaultOptButtons(['edit', 'delete'])
-    if (auth('release') == true) {
-        newBtns = _.concat(releaseBtn, newBtns)
-    }
-    return newBtns
-}
-
-const tableRef = ref()
-
-const baTable = new baTableClass(
-    new baTableApi(productVersion),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {label: '版本名称', prop: 'versionName', align: 'center', width: '150', operator: 'LIKE'},
-            {label: '版本号', prop: 'versionCode', align: 'center', width: '150', operator: false},
-            {label: '更新说明', prop: 'upgradeDescription', align: 'left', operator: false},
-            {
-                label: '是否强制升级',
-                prop: 'isForce',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                custom: {1: 'success', 0: 'info'},
-                replaceValue: {1: '是', 0: '否'}
-            },
-            {
-                label: '是否发布',
-                prop: 'isRelease',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                custom: {1: 'success', 0: 'info'},
-                replaceValue: {1: '是', 0: '否'}
-            },
-            {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: optButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'release') {
-            infoButtonClick(data.row)
-        }
-    })
-})
-
-const infoButtonClick = (row: TableRow) => {
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    if (row.isRelease == 1) {
-        ElMessage({type: 'warning', message: '当前版本已发布!', grouping: true})
-
-    } else {
-        ElMessageBox.confirm(
-            '请确定是否发布当前版本?',
-            {
-                confirmButtonText: 'OK',
-                cancelButtonText: 'Cancel',
-                type: 'warning',
-            }
-        ).then(() => {
-            request.edit(versionRelease, {id: row.id},'').then(res => {
-                //刷新数据表
-                baTable.onTableHeaderAction('refresh', {loading: true})
-            })
-
-        }).catch(() => {
-
-        })
-    }
-
-}
-</script>
-
-
-<style scoped lang="scss"></style>

+ 0 - 252
src/views/backend/enterprise/smartscreen/versions/popupForm.vue

@@ -1,252 +0,0 @@
-<template>
-    <!-- 对话框表单 -->
-    <el-dialog
-        custom-class="ba-operate-dialog"
-        :close-on-click-modal="false"
-        :model-value="baTable.form.operate ? true : false"
-        @close="baTable.toggleForm"
-    >
-        <template #header>
-            <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
-                {{ baTable.form.operate ? baTable.form.operate == 'edit' ? '编辑' : '添加' : '无标题' }}
-            </div>
-        </template>
-        <el-scrollbar v-loading="baTable.form.loading" class="ba-table-form-scrollbar">
-            <div
-                class="ba-operate-form"
-                :class="'ba-' + baTable.form.operate + '-form'"
-                :style="'width: calc(100% - ' + baTable.form.labelWidth! / 2 + 'px)'"
-            >
-                <el-form
-                    ref="formRef"
-                    @keyup.enter="baTable.onSubmit(formRef)"
-                    :model="baTable.form.items"
-                    label-position="right"
-                    :label-width="baTable.form.labelWidth + 'px'"
-                    :rules="rules"
-                    v-if="!baTable.form.loading"
-                >
-                    <el-form-item prop="productId" label="产品">
-                        <el-select v-model="baTable.form.items!.productId" style="width: 100%">
-                            <el-option v-for="item in productList" :label="item.productName" :value="item.id"></el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="versionName" label="版本名称">
-                        <el-input v-model="baTable.form.items!.versionName"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="versionCode" label="版本号">
-                        <el-input v-model="baTable.form.items!.versionCode"></el-input>
-                    </el-form-item>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="upgradeType" label="版本类型">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.upgradeType">
-                                    <el-option label="固件" :value="0"></el-option>
-                                    <el-option label="大屏" :value="1"></el-option>
-                                    <el-option label="APP" :value="2"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item prop="osType" label="操作系统">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.osType">
-                                    <el-option label="Android" :value="0"></el-option>
-                                    <el-option label="IOS" :value="1"></el-option>
-                                    <el-option label="Harmony" :value="2"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-row>
-                        <el-col :span="12">
-                            <el-form-item prop="isForce" label="强制升级">
-                                <el-select style="width: 100%" v-model="baTable.form.items!.isForce">
-                                    <el-option label="否" :value="0"></el-option>
-                                    <el-option label="是" :value="1"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-<!--                        <el-col :span="12">-->
-<!--                            <el-form-item prop="isRelease" label="是否发布">-->
-<!--                                <el-select style="width: 100%" v-model="baTable.form.items!.isRelease">-->
-<!--                                    <el-option label="否" :value="0"></el-option>-->
-<!--                                    <el-option label="是" :value="1"></el-option>-->
-<!--                                </el-select>-->
-<!--                            </el-form-item>-->
-<!--                        </el-col>-->
-                    </el-row>
-                    <el-form-item prop="upgradeDescription" label="更新说明">
-                        <el-input type="textarea" v-model="baTable.form.items!.upgradeDescription"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="upgradePackageUrl" label="升级包">
-                        <ossUploadItem v-model:data="baTable.form.items!.upgradePackageUrl" @success="uploadSuccess"></ossUploadItem>
-                        <div style="font-size: 10px;color: #92969a">
-                            仅限zip文件
-                        </div>
-                    </el-form-item>
-
-                </el-form>
-            </div>
-        </el-scrollbar>
-        <template #footer>
-            <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
-                <el-button @click="baTable.toggleForm('')">取消</el-button>
-                <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)"
-                           type="primary">
-                    {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? '保存并编辑下一项' : '保存' }}
-                </el-button>
-            </div>
-        </template>
-    </el-dialog>
-</template>
-
-<script setup lang="ts">
-import {ref, reactive, inject, onMounted, watch} from 'vue'
-import type baTableClass from '/@/utils/baTable'
-import {validatorInteger} from '/@/utils/validate'
-import type {ElForm, FormItemRule} from 'element-plus'
-import FormItem from '/@/components/formItem/index.vue'
-import {getOrgTree, getEmployees} from '/@/api/backend/auth/account'
-import {authGroup, product, sysConfig} from '/@/api/controllerUrls'
-import editor from '/@/components/editor/index.vue'
-import request from "/@/api/request";
-import {ElNotification} from "element-plus/es";
-import {document} from '/@/api/controllerUrls'
-import ossUploadItem from '/@/components/pictureUpload/ossUploadView.vue'
-
-const formRef = ref<InstanceType<typeof ElForm>>()
-const baTable = inject('baTable') as baTableClass
-
-
-watch(()=>baTable.form.operate,(n)=>{
-    if(n){
-        getInitData()
-    }
-})
-
-let productList = ref([])
-
-function getInitData() {
-    request.index(product, undefined, 'index').then(res => {
-        productList.value = res.data.list
-    })
-}
-
-
-function uploadSuccess(file:any){
-    baTable.form.items!.upgradePackageSize = file.size
-    baTable.form.items!.extensionName = file.fileType
-}
-
-
-
-
-const rules: Partial<Record<string, FormItemRule[]>> = reactive({
-    productId: [
-        {
-            required: true,
-            message: '请选择产品',
-            trigger: 'blur',
-        },
-    ],
-    versionName: [
-        {
-            required: true,
-            message: '请输入版本名称',
-            trigger: 'blur',
-        },
-    ],
-    productId: [
-        {
-            required: true,
-            message: '请选择产品',
-            trigger: 'blur',
-        },
-    ],
-    upgradeType: [
-        {
-            required: true,
-            message: '请选择版本类型',
-            trigger: 'blur',
-        },
-    ],
-    osType: [
-        {
-            required: true,
-            message: '请选择操作系统类型',
-            trigger: 'blur',
-        },
-    ],
-    versionCode: [
-        {
-            required: true,
-            message: '请输入版本号',
-            trigger: 'blur',
-        },
-        {validator: validatorInteger, trigger: 'blur'}
-    ],
-    upgradeDescription: [
-        {
-            required: true,
-            message: '请输入升级说明',
-            trigger: 'blur',
-        },
-    ],
-    upgradePackageUrl: [
-        {
-            required: true,
-            message: '请上传升级包',
-            trigger: 'blur',
-        },
-    ],
-    isForce: [
-        {
-            required: true,
-            message: '请选择是否强制升级',
-            trigger: 'blur',
-        },
-    ],
-    // isRelease: [
-    //     {
-    //         required: true,
-    //         message: '请选择是否发布',
-    //         trigger: 'blur',
-    //     },
-    // ],
-})
-
-
-</script>
-
-<style scoped lang="scss">
-.avatar-uploader {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    border-radius: var(--el-border-radius-small);
-    box-shadow: var(--el-box-shadow-light);
-    border: 1px dashed var(--color-sub-1);
-    cursor: pointer;
-    overflow: hidden;
-    width: 110px;
-    height: 110px;
-}
-
-.avatar-uploader:hover {
-    border-color: var(--color-primary);
-}
-
-.avatar {
-    width: 110px;
-    height: 110px;
-    display: block;
-}
-
-.image-slot {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-}
-</style>

+ 13 - 0
src/views/backend/enterprise/store/employee/index.vue

@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+  name: "index"
+};
+</script>
+
+<style scoped>
+
+</style>

+ 134 - 0
src/views/backend/enterprise/store/employee/popupForm.vue

@@ -0,0 +1,134 @@
+<template>
+  <!-- 对话框表单 -->
+  <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
+             :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
+             width="30%"
+  >
+    <template #header>
+      <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
+        {{ baTable.form.operate ? baTable.form.operate == "edit" ? "编辑" : "添加" : "无标题" }}
+      </div>
+    </template>
+    <el-scrollbar v-loading="baTable.form.loading">
+      <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
+           style="width: calc(100% - 40px);margin-bottom: 40px;">
+        <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
+                 label-position="right" :label-width="'100px'" :rules="rules"
+                 v-if="!baTable.form.loading">
+          <el-form-item prop="storeId" label="门店名称">
+            <el-select v-model="baTable.form.items!.storeId" placeholder="请选择" style="width: 100%">
+              <el-option v-for="item in storeList" :label="item.storeName" :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="goodsName" label="商品名称">
+            <el-input v-model="baTable.form.items!.goodsName" placeholder="请输入"></el-input>
+          </el-form-item>
+          <el-form-item prop="goodsType" label="商品类型">
+            <el-select v-model="baTable.form.items!.goodsType" placeholder="请选择" style="width: 100%">
+              <el-option label="服务" :value="0"></el-option>
+              <el-option label="实物" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="goodsPrice" label="商品价格">
+            <el-input type="number" v-model="baTable.form.items!.goodsPrice" placeholder="请输入"></el-input>
+          </el-form-item>
+          <el-form-item prop="goodsStatus" label="商品状态">
+            <el-select v-model="baTable.form.items!.goodsStatus" placeholder="请选择" style="width: 100%">
+              <el-option label="正常" :value="0"></el-option>
+              <el-option label="停用" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="description" label="商品说明">
+            <el-input type="textarea" v-model="baTable.form.items!.description" placeholder="请输入"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-scrollbar>
+    <template #footer>
+      <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
+        <el-button @click="baTable.toggleForm('')">取消</el-button>
+        <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
+          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? "保存并编辑下一项" : "保存" }}
+        </el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup lang="ts">
+import { ref, reactive, inject, onMounted, watch } from "vue";
+
+import type baTableClass from "/@/utils/baTable";
+import type { ElForm, FormItemRule } from "element-plus";
+import FormItem from "/@/components/formItem/index.vue";
+import { ElNotification } from "element-plus/es";
+import request from "/@/api/request";
+import { store } from "/@/api/controllerUrls";
+
+const formRef = ref<InstanceType<typeof ElForm>>();
+const baTable = inject("baTable") as baTableClass;
+
+
+const rules: Partial<Record<string, FormItemRule[]>> = reactive({
+  storeId: [{ required: true, message: "请选择", trigger: "blur" }],
+  goodsName: [{ required: true, message: "请输入", trigger: "blur" }],
+  goodsType: [{ required: true, message: "请选择", trigger: "blur" }],
+  goodsPrice: [{ required: true, message: "请输入", trigger: "blur" }],
+  goodsStatus: [{ required: true, message: "请选择", trigger: "blur" }]
+});
+
+onMounted(() => {
+  getInitData();
+});
+
+let storeList = ref([]);
+
+function getInitData() {
+  request.index(store, {}, "list").then((res: any) => {
+    if (res.code == 1) {
+      storeList.value = res.data;
+    }
+  });
+}
+
+
+</script>
+
+<style scoped lang="scss">
+.avatar-uploader {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  border-radius: var(--el-border-radius-small);
+  box-shadow: var(--el-box-shadow-light);
+  border: 1px dashed var(--color-sub-1);
+  cursor: pointer;
+  overflow: hidden;
+  width: 110px;
+  height: 110px;
+}
+
+.avatar-uploader:hover {
+  border-color: var(--color-primary);
+}
+
+.avatar {
+  width: 110px;
+  height: 110px;
+  display: block;
+}
+
+.image-slot {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+:deep(input::-webkit-outer-spin-button),
+:deep(input::-webkit-inner-spin-button) {
+  -webkit-appearance: none !important;
+  margin: 0;
+}
+</style>

+ 93 - 0
src/views/backend/enterprise/store/goods/index.vue

@@ -0,0 +1,93 @@
+<template>
+  <div class="default-main ">
+    <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
+              show-icon/>
+    <el-row>
+      <el-col :span="24">
+
+        <!-- 表格顶部菜单 -->
+        <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
+                     quick-search-placeholder="通过标题模糊搜索"
+                     @action="baTable.onTableHeaderAction"/>
+        <!-- 表格 -->
+        <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
+        <Table @action="baTable.onTableAction"/>
+
+      </el-col>
+    </el-row>
+
+    <!-- 表单 -->
+    <PopupForm ref="formRef"/>
+
+  </div>
+</template>
+
+<script setup lang="ts">
+import {ref, onMounted, provide} from 'vue'
+import { storeGoods } from "/@/api/controllerUrls";
+import Table from '/@/components/table/index.vue'
+import TableHeader from '/@/components/table/header/index.vue'
+import {defaultOptButtons} from '/@/components/table'
+import PopupForm from './popupForm.vue'
+import {baTableApi} from '/@/api/common'
+import baTableClass from '/@/utils/baTable'
+
+
+const baTable = new baTableClass(
+  new baTableApi(storeGoods),
+  {
+    dblClickNotEditColumn: [undefined, 'status'],
+    column: [
+      {type: 'selection', align: 'center', operator: false},
+      {label: '门店名称', prop: 'storeName', align: 'left', operator: 'LIKE'},
+      {label: '商品名称', prop: 'goodsName', align: 'left', operator: 'LIKE'},
+      {
+        label: "商品类型",
+        prop: "goodsType",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "服务", 1: "实物" }
+      },
+      {label: '商品价格', prop: 'goodsPrice', align: 'center', operator: false},
+      {
+        label: "商品状态",
+        prop: "goodsStatus",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "正常", 1: "下架" }
+      },
+      {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
+      {label: '创建时间', prop: 'createTime', align: 'center', width: '180', operator: false},
+      {
+        label: '操作',
+        align: 'center',
+        width: '160',
+        render: 'buttons',
+        buttons: defaultOptButtons(),
+        operator: false
+      },
+    ],
+  },
+  {
+    defaultItems: {},
+  },
+  {
+    // 获得编辑数据后
+    requestEdit: () => {
+      if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
+    },
+  }
+)
+
+provide('baTable', baTable)
+
+onMounted(() => {
+  baTable.mount()
+  baTable.getIndex()
+})
+</script>
+
+
+<style scoped lang="scss"></style>

+ 134 - 0
src/views/backend/enterprise/store/goods/popupForm.vue

@@ -0,0 +1,134 @@
+<template>
+  <!-- 对话框表单 -->
+  <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
+             :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
+             width="30%"
+  >
+    <template #header>
+      <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
+        {{ baTable.form.operate ? baTable.form.operate == "edit" ? "编辑" : "添加" : "无标题" }}
+      </div>
+    </template>
+    <el-scrollbar v-loading="baTable.form.loading">
+      <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
+           style="width: calc(100% - 40px);margin-bottom: 40px;">
+        <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
+                 label-position="right" :label-width="'100px'" :rules="rules"
+                 v-if="!baTable.form.loading">
+          <el-form-item prop="storeId" label="门店名称">
+            <el-select v-model="baTable.form.items!.storeId" placeholder="请选择" style="width: 100%">
+              <el-option v-for="item in storeList" :label="item.storeName" :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="goodsName" label="商品名称">
+            <el-input v-model="baTable.form.items!.goodsName" placeholder="请输入"></el-input>
+          </el-form-item>
+          <el-form-item prop="goodsType" label="商品类型">
+            <el-select v-model="baTable.form.items!.goodsType" placeholder="请选择" style="width: 100%">
+              <el-option label="服务" :value="0"></el-option>
+              <el-option label="实物" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="goodsPrice" label="商品价格">
+            <el-input type="number" v-model="baTable.form.items!.goodsPrice" placeholder="请输入"></el-input>
+          </el-form-item>
+          <el-form-item prop="goodsStatus" label="商品状态">
+            <el-select v-model="baTable.form.items!.goodsStatus" placeholder="请选择" style="width: 100%">
+              <el-option label="正常" :value="0"></el-option>
+              <el-option label="停用" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="description" label="商品说明">
+            <el-input type="textarea" v-model="baTable.form.items!.description" placeholder="请输入"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-scrollbar>
+    <template #footer>
+      <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
+        <el-button @click="baTable.toggleForm('')">取消</el-button>
+        <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
+          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? "保存并编辑下一项" : "保存" }}
+        </el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup lang="ts">
+import { ref, reactive, inject, onMounted, watch } from "vue";
+
+import type baTableClass from "/@/utils/baTable";
+import type { ElForm, FormItemRule } from "element-plus";
+import FormItem from "/@/components/formItem/index.vue";
+import { ElNotification } from "element-plus/es";
+import request from "/@/api/request";
+import { store } from "/@/api/controllerUrls";
+
+const formRef = ref<InstanceType<typeof ElForm>>();
+const baTable = inject("baTable") as baTableClass;
+
+
+const rules: Partial<Record<string, FormItemRule[]>> = reactive({
+  storeId: [{ required: true, message: "请选择", trigger: "blur" }],
+  goodsName: [{ required: true, message: "请输入", trigger: "blur" }],
+  goodsType: [{ required: true, message: "请选择", trigger: "blur" }],
+  goodsPrice: [{ required: true, message: "请输入", trigger: "blur" }],
+  goodsStatus: [{ required: true, message: "请选择", trigger: "blur" }]
+});
+
+onMounted(() => {
+  getInitData();
+});
+
+let storeList = ref([]);
+
+function getInitData() {
+  request.index(store, {}, "list").then((res: any) => {
+    if (res.code == 1) {
+      storeList.value = res.data;
+    }
+  });
+}
+
+
+</script>
+
+<style scoped lang="scss">
+.avatar-uploader {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  border-radius: var(--el-border-radius-small);
+  box-shadow: var(--el-box-shadow-light);
+  border: 1px dashed var(--color-sub-1);
+  cursor: pointer;
+  overflow: hidden;
+  width: 110px;
+  height: 110px;
+}
+
+.avatar-uploader:hover {
+  border-color: var(--color-primary);
+}
+
+.avatar {
+  width: 110px;
+  height: 110px;
+  display: block;
+}
+
+.image-slot {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+:deep(input::-webkit-outer-spin-button),
+:deep(input::-webkit-inner-spin-button) {
+  -webkit-appearance: none !important;
+  margin: 0;
+}
+</style>

+ 92 - 0
src/views/backend/enterprise/store/storeManage/index.vue

@@ -0,0 +1,92 @@
+<template>
+  <div class="default-main ">
+    <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
+              show-icon/>
+    <el-row>
+      <el-col :span="24">
+
+        <!-- 表格顶部菜单 -->
+        <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
+                     quick-search-placeholder="通过标题模糊搜索"
+                     @action="baTable.onTableHeaderAction"/>
+        <!-- 表格 -->
+        <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
+        <Table @action="baTable.onTableAction"/>
+
+      </el-col>
+    </el-row>
+
+    <!-- 表单 -->
+    <PopupForm ref="formRef"/>
+
+  </div>
+</template>
+
+<script setup lang="ts">
+import {ref, onMounted, provide} from 'vue'
+import { store } from "/@/api/controllerUrls";
+import Table from '/@/components/table/index.vue'
+import TableHeader from '/@/components/table/header/index.vue'
+import {defaultOptButtons} from '/@/components/table'
+import PopupForm from './popupForm.vue'
+import {baTableApi} from '/@/api/common'
+import baTableClass from '/@/utils/baTable'
+
+
+const baTable = new baTableClass(
+  new baTableApi(store),
+  {
+    dblClickNotEditColumn: [undefined, 'status'],
+    column: [
+      {type: 'selection', align: 'center', operator: false},
+      {label: '门店名称', prop: 'storeName', align: 'left', operator: 'LIKE'},
+      {
+        label: "门店类型",
+        prop: "storeType",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "自营", 1: "加盟" }
+      },
+      {label: '门店LOGO', prop: 'storeLogo', align: 'center',render:'images', operator: false},
+      {
+        label: "门店状态",
+        prop: "storeStatus",
+        align: "center",
+        render: "tag",
+        operator: "=",
+        replaceValue: { 0: "正常", 1: "停用" }
+      },
+      {label: '创建人', prop: 'creatorName', align: 'center', width: '120', operator: false},
+      {label: '创建时间', prop: 'createTime', align: 'center', width: '180', operator: false},
+      {
+        label: '操作',
+        align: 'center',
+        width: '160',
+        render: 'buttons',
+        buttons: defaultOptButtons(),
+        operator: false
+      },
+    ],
+  },
+  {
+    defaultItems: {},
+  },
+  {
+    // 获得编辑数据后
+    requestEdit: () => {
+      if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
+    },
+  }
+)
+
+provide('baTable', baTable)
+
+onMounted(() => {
+  baTable.mount()
+  baTable.getIndex()
+})
+</script>
+
+
+<style scoped lang="scss"></style>

+ 132 - 0
src/views/backend/enterprise/store/storeManage/popupForm.vue

@@ -0,0 +1,132 @@
+<template>
+  <!-- 对话框表单 -->
+  <el-dialog custom-class="ba-operate-dialog" :close-on-click-modal="false"
+             :model-value="baTable.form.operate ? true : false" @close="baTable.toggleForm"
+             width="30%"
+  >
+    <template #header>
+      <div class="title" v-drag="['.ba-operate-dialog', '.el-dialog__header']" v-zoom="'.ba-operate-dialog'">
+        {{ baTable.form.operate ? baTable.form.operate == "edit" ? "编辑" : "添加" : "无标题" }}
+      </div>
+    </template>
+    <el-scrollbar v-loading="baTable.form.loading">
+      <div class="ba-operate-form" :class="'ba-' + baTable.form.operate + '-form'"
+           style="width: calc(100% - 40px);margin-bottom: 40px;">
+        <el-form ref="formRef" @keyup.enter="baTable.onSubmit(formRef)" :model="baTable.form.items"
+                 label-position="right" :label-width="'100px'" :rules="rules"
+                 v-if="!baTable.form.loading">
+          <el-form-item prop="storeName" label="门店名称">
+            <el-input v-model="baTable.form.items!.storeName" placeholder="请输入">
+            </el-input>
+          </el-form-item>
+          <el-form-item prop="storeType" label="门店类型">
+            <el-select v-model="baTable.form.items!.storeType" placeholder="请选择" style="width: 100%">
+              <el-option label="自营" :value="0"></el-option>
+              <el-option label="加盟" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="storeLogo" label="门店LOGO">
+            <pictureUpload v-model:fileUrl="baTable.form.items!.storeLogo"></pictureUpload>
+          </el-form-item>
+          <el-form-item prop="storeStatus" label="门店状态">
+            <el-select v-model="baTable.form.items!.storeStatus" placeholder="请选择" style="width: 100%">
+              <el-option label="正常" :value="0"></el-option>
+              <el-option label="停用" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-scrollbar>
+    <template #footer>
+      <div :style="'width: calc(100% - ' + baTable.form.labelWidth! / 1.8 + 'px)'">
+        <el-button @click="baTable.toggleForm('')">取消</el-button>
+        <el-button v-blur :loading="baTable.form.submitLoading" @click="baTable.onSubmit(formRef)" type="primary">
+          {{ baTable.form.operateIds && baTable.form.operateIds.length > 1 ? "保存并编辑下一项" : "保存" }}
+        </el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup lang="ts">
+import { ref, reactive, inject, onMounted, watch } from "vue";
+
+import type baTableClass from "/@/utils/baTable";
+import type { ElForm, FormItemRule } from "element-plus";
+import FormItem from "/@/components/formItem/index.vue";
+import { ElNotification } from "element-plus/es";
+import pictureUpload from "/@/components/pictureUpload/multiple.vue";
+import request from "/@/api/request";
+
+const formRef = ref<InstanceType<typeof ElForm>>();
+const baTable = inject("baTable") as baTableClass;
+
+
+const rules: Partial<Record<string, FormItemRule[]>> = reactive({
+  storeName: [
+    {
+      required: true,
+      message: "请输入",
+      trigger: "blur"
+    }
+  ],
+  storeType: [
+    {
+      required: true,
+      message: "请选择",
+      trigger: "blur"
+    }
+  ],
+  storeStatus: [
+    {
+      required: true,
+      message: "请选择",
+      trigger: "blur"
+    }
+  ],
+  // storeLogo: [
+  //   {
+  //     required: true,
+  //     message: "请上传",
+  //     trigger: "blur"
+  //   }
+  // ]
+});
+
+
+
+
+</script>
+
+<style scoped lang="scss">
+.avatar-uploader {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  border-radius: var(--el-border-radius-small);
+  box-shadow: var(--el-box-shadow-light);
+  border: 1px dashed var(--color-sub-1);
+  cursor: pointer;
+  overflow: hidden;
+  width: 110px;
+  height: 110px;
+}
+
+.avatar-uploader:hover {
+  border-color: var(--color-primary);
+}
+
+.avatar {
+  width: 110px;
+  height: 110px;
+  display: block;
+}
+
+.image-slot {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+</style>

+ 0 - 73
src/views/backend/enterprise/suggests/detail.vue

@@ -1,73 +0,0 @@
-<template>
-  <el-dialog custom-class="ba-operate-dialog" :model-value="showDialog" @close="showDialog=false"
-    :title="detailData.handleStatusName">
-    <div class="mt-20">
-      <el-descriptions title="" direction="vertical" :column="4" border>
-        <el-descriptions-item label="问题来源">{{detailData.sourceType===0?'显示屏幕':detailData.sourceType===1?'内置应用':'手机应用'}}
-        </el-descriptions-item>
-        <el-descriptions-item label="反馈类型">{{detailData.feedbackType===0?'功能':detailData.feedbackType===1?'优化':'其他'}}
-        </el-descriptions-item>
-        <el-descriptions-item label="联系人">{{detailData.contactName}}</el-descriptions-item>
-        <el-descriptions-item label="联系电话">{{detailData.contactMobile}}</el-descriptions-item>
-        <el-descriptions-item label="备注" :span="4">{{detailData.feedbackContent}}</el-descriptions-item>
-        <el-descriptions-item label="图片" :span="4">
-          <div style="display: flex;flex-flow: wrap">
-            <el-image  :preview-src-list="detailData.feedbackPictureUrl" :src="item" v-for="(item,index) in detailData.feedbackPictureUrl" style="height: 100px;width: 100px;padding:10px" :key="index"></el-image>
-          </div>
-        </el-descriptions-item>
-      </el-descriptions>
-    </div>
-    <div style="margin-top: 20px">
-      <div style="display: flex;justify-content: space-between;margin-top: 10px">
-        <span>处理情况:</span>
-      </div>
-      <el-input style="margin-top: 10px" type="textarea" rows="6" v-model="detailData.handleRemark">
-      </el-input>
-    </div>
-    <div class="flex justify-flex-end mt-20">
-      <el-button type="primary" @click="save">保存</el-button>
-    </div>
-  </el-dialog>
-</template>
-
-<script setup lang="ts">
-import { nextTick, ref, toRaw } from 'vue'
-import request from '/@/api/request'
-import { feedback, member } from '/@/api/controllerUrls'
-
-let props = defineProps({
-    data: {
-        type: Object,
-        default: {},
-    },
-})
-
-let detailData = ref({})
-let showDialog = ref(false)
-
-function openDialog(value: any) {
-    showDialog.value = true
-    nextTick(() => {
-        getData(value)
-    })
-}
-
-function getData(value: any) {
-    request.index(feedback, { id: value.id }, 'detail').then((res) => {
-        detailData.value = res.data
-    })
-}
-
-function save() {
-    request.edit(feedback, { id: detailData.value.id, handleRemark: detailData.value.handleRemark }, 'confirm').then((res) => {
-        detailData.value = res.data
-    })
-}
-
-defineExpose({
-    openDialog,
-})
-</script>
-
-<style scoped>
-</style>

+ 0 - 157
src/views/backend/enterprise/suggests/feedback.vue

@@ -1,157 +0,0 @@
-<template>
-    <div class="default-main ba-table-box">
-        <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
-                  show-icon/>
-        <el-row>
-            <el-col :span="24">
-                <!-- 表格顶部菜单 -->
-                <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
-                             quick-search-placeholder="通过标题模糊搜索"
-                             @action="baTable.onTableHeaderAction"/>
-                <!-- 表格 -->
-                <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
-                <Table @action="baTable.onTableAction"/>
-
-            </el-col>
-        </el-row>
-
-
-        <detail ref="detailRef" ></detail>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import {ref, onMounted, provide} from 'vue'
-import {advertisement, coupon, document, feedback, recommend} from '/@/api/controllerUrls'
-import Table from '/@/components/table/index.vue'
-import TableHeader from '/@/components/table/header/index.vue'
-import {defaultOptButtons} from '/@/components/table'
-import detail from './detail.vue'
-import {baTableApi} from '/@/api/common'
-import baTableClass from '/@/utils/baTable'
-import _ from "lodash";
-import useCurrentInstance from "/@/utils/useCurrentInstance";
-import {auth} from "/@/utils/common";
-
-
-//详情按钮
-let detailBtn: OptButton[] = [
-    {
-        render: 'tipButton',
-        name: 'detail',
-        title: '详情',
-        text: '详情',
-        type: 'primary',
-        icon: '',
-        class: 'table-row-edit',
-        disabledTip: false,
-    },
-]
-
-//根据权限增加按钮
-function optButtons() {
-    let newBtns = defaultOptButtons([])
-    if (auth('detail') == true) {
-        newBtns = _.concat(detailBtn, newBtns)
-    }
-    return newBtns
-}
-
-
-const tableRef = ref()
-const baTable = new baTableClass(
-    new baTableApi(feedback),
-    {
-        dblClickNotEditColumn: [undefined, 'status'],
-        column: [
-            {type: 'selection', align: 'center', operator: false},
-            {
-                label: '头像',
-                prop: 'headPortrait',
-                align: 'center',
-                width: '120',
-                render: 'image',
-                operator: false
-            },
-            {label: '用户', prop: 'memberName', align: 'center', width: '120',operator: 'LIKE'},
-            {label: '问题来源',
-                prop: 'sourceType',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                replaceValue:{0:'显示屏',1:'内置应用',2:'手机应用'}
-            },
-            {label: '反馈类型',
-                prop: 'feedbackType',
-                align: 'center',
-                width: '120',
-                render: 'tag',
-                operator: '=',
-                replaceValue:{0:'功能异常',1:'优化建议',2:'其他'}
-            },
-            {label: '反馈内容', prop: 'feedbackContent', align: 'left', operator: false},
-            {label: '联系人', prop: 'contactName', align: 'center', width: '120', operator: 'LIKE'},
-            {label: '联系电话', prop: 'contactMobile', align: 'center', width: '160', operator: 'LIKE'},
-            {label: '创建时间', prop: 'createTime', align: 'center', width: '170', operator: false},
-            {
-                label: '操作',
-                align: 'center',
-                width: '160',
-                render: 'buttons',
-                buttons: optButtons(),
-                operator: false
-            },
-        ],
-    },
-    {
-        defaultItems: {},
-    },
-    {
-        // 获得编辑数据后
-        requestEdit: () => {
-            if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = 'el-icon-Minus'
-        },
-    }
-)
-
-provide('baTable', baTable)
-
-onMounted(() => {
-    baTable.mount()
-    baTable.getIndex()
-
-    const {proxy} = useCurrentInstance()
-    /**
-     * 表格内的按钮响应
-     * @param name 按钮name
-     * @param row 被操作行数据
-     */
-    proxy.eventBus.on('onTableButtonClick', (data: { name: string; row: TableRow }) => {
-        if (!baTable.activate) return
-        if (data.name == 'detail') {
-            infoButtonClick(data.row)
-        }
-    })
-})
-
-
-let detailRef = ref()
-
-
-
-/** 点击查看详情按钮响应 */
-const infoButtonClick = (row: TableRow) => {
-    if (!row) return
-// 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
-    let rowClone = _.cloneDeep(row)
-    detailRef.value.openDialog(rowClone)
-}
-
-
-
-</script>
-
-
-<style scoped lang="scss"></style>

+ 1 - 1
src/views/backend/login.vue

@@ -128,7 +128,7 @@
       </div>
       </div>
       <div class="form">
       <div class="form">
         <div style="margin-top:30px;text-align: center;color:#3a485a">
         <div style="margin-top:30px;text-align: center;color:#3a485a">
-          <h3>智由家-企业级运营管理平台</h3>
+          <h3>车位销售运营管理平台</h3>
         </div>
         </div>
         <div class="content">
         <div class="content">
           <el-form @keyup.enter="onSubmit(formRef)" ref="formRef" :rules="rules" size="large" :model="form">
           <el-form @keyup.enter="onSubmit(formRef)" ref="formRef" :rules="rules" size="large" :model="form">