├── .gitignore
├── LICENSE
├── README.md
├── admin
├── .eslintrc.cjs
├── .gitignore
├── .vscode
│ ├── extensions.json
│ └── settings.json
├── README.md
├── global.d.ts
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── scripts
│ └── build.mjs
├── src
│ ├── App.vue
│ ├── api
│ │ ├── app.ts
│ │ ├── article.ts
│ │ ├── channel
│ │ │ ├── h5.ts
│ │ │ ├── weapp.ts
│ │ │ ├── wx_dev.ts
│ │ │ └── wx_oa.ts
│ │ ├── consumer.ts
│ │ ├── decoration.ts
│ │ ├── file.ts
│ │ ├── message.ts
│ │ ├── org
│ │ │ ├── department.ts
│ │ │ └── post.ts
│ │ ├── perms
│ │ │ ├── admin.ts
│ │ │ ├── menu.ts
│ │ │ └── role.ts
│ │ ├── setting
│ │ │ ├── dict.ts
│ │ │ ├── search.ts
│ │ │ ├── storage.ts
│ │ │ ├── system.ts
│ │ │ ├── user.ts
│ │ │ └── website.ts
│ │ ├── tools
│ │ │ └── code.ts
│ │ └── user.ts
│ ├── assets
│ │ ├── icons
│ │ │ ├── Androidfanhui.svg
│ │ │ ├── KMSguanli.svg
│ │ │ ├── KTVyuding.svg
│ │ │ ├── a-tixingdengpao.svg
│ │ │ ├── anquan.svg
│ │ │ ├── anquan_mian.svg
│ │ │ ├── anquan_mian1.svg
│ │ │ ├── banxing_mian.svg
│ │ │ ├── baoxian.svg
│ │ │ ├── bendishenghuodaxue.svg
│ │ │ ├── bianji.svg
│ │ │ ├── biaoqing.svg
│ │ │ ├── bukejian.svg
│ │ │ ├── caipinguanli.svg
│ │ │ ├── caiwu.svg
│ │ │ ├── caiwu_jifen.svg
│ │ │ ├── caiwu_tixian.svg
│ │ │ ├── canyinfuwu.svg
│ │ │ ├── carryout.svg
│ │ │ ├── chexiao.svg
│ │ │ ├── chihuohongbao.svg
│ │ │ ├── chuangyiwuliao.svg
│ │ │ ├── close.svg
│ │ │ ├── daiyunying.svg
│ │ │ ├── danwei.svg
│ │ │ ├── danxuankuang.svg
│ │ │ ├── danxuanxuanzhong.svg
│ │ │ ├── dayin.svg
│ │ │ ├── dayin_mian.svg
│ │ │ ├── del.svg
│ │ │ ├── diancanshezhi.svg
│ │ │ ├── dianhua.svg
│ │ │ ├── dianhua_mian.svg
│ │ │ ├── dianpu_fengge.svg
│ │ │ ├── dianputuijian.svg
│ │ │ ├── dianzifapiao.svg
│ │ │ ├── dingcan.svg
│ │ │ ├── dingdan.svg
│ │ │ ├── dingdan1.svg
│ │ │ ├── dingdan_mian.svg
│ │ │ ├── dingwei.svg
│ │ │ ├── dingwei_mian.svg
│ │ │ ├── ditu.svg
│ │ │ ├── ditu_mian.svg
│ │ │ ├── duizhang.svg
│ │ │ ├── elemo.svg
│ │ │ ├── ezhanggui.svg
│ │ │ ├── falvfuwubaoxiaohei.svg
│ │ │ ├── fengniaopaotui.svg
│ │ │ ├── fenxiang.svg
│ │ │ ├── fukuan.svg
│ │ │ ├── fukuan_mian.svg
│ │ │ ├── fullscreen-exit.svg
│ │ │ ├── fullscreen.svg
│ │ │ ├── fuwushichang.svg
│ │ │ ├── fuzhi.svg
│ │ │ ├── gaode.svg
│ │ │ ├── gengduo.svg
│ │ │ ├── gengduoandroid.svg
│ │ │ ├── gift.svg
│ │ │ ├── gongyingshang.svg
│ │ │ ├── goods.svg
│ │ │ ├── gou.svg
│ │ │ ├── gouwuche.svg
│ │ │ ├── gouxuan.svg
│ │ │ ├── gouxuan_mian.svg
│ │ │ ├── guanbi.svg
│ │ │ ├── guanli.svg
│ │ │ ├── guanli_mian.svg
│ │ │ ├── gukefapiao.svg
│ │ │ ├── haibaosheji.svg
│ │ │ ├── heshoujilu.svg
│ │ │ ├── heshoujilu1.svg
│ │ │ ├── hexiao_order.svg
│ │ │ ├── hide-2.svg
│ │ │ ├── hide.svg
│ │ │ ├── hongbao.svg
│ │ │ ├── huiche.svg
│ │ │ ├── huiyuanyingxiao.svg
│ │ │ ├── huodongbaoming.svg
│ │ │ ├── huodongguanli.svg
│ │ │ ├── huodongzhongxin.svg
│ │ │ ├── huojian.svg
│ │ │ ├── huojian_mian.svg
│ │ │ ├── huolala.svg
│ │ │ ├── iOSfanhui.svg
│ │ │ ├── jia.svg
│ │ │ ├── jia_mian.svg
│ │ │ ├── jian.svg
│ │ │ ├── jian_mian.svg
│ │ │ ├── jianpan.svg
│ │ │ ├── jianpanshanchu.svg
│ │ │ ├── jianshao.svg
│ │ │ ├── jiaopeiwangputong.svg
│ │ │ ├── jiaoyi.svg
│ │ │ ├── jiedan.svg
│ │ │ ├── jiekuan.svg
│ │ │ ├── jingshi.svg
│ │ │ ├── jingshi_mian.svg
│ │ │ ├── jingshi_mian1.svg
│ │ │ ├── jingyin.svg
│ │ │ ├── jingyin_mian.svg
│ │ │ ├── jingying.svg
│ │ │ ├── jingying_mian.svg
│ │ │ ├── jingyinggonglve.svg
│ │ │ ├── jingzhunyingxiao.svg
│ │ │ ├── jinhuo.svg
│ │ │ ├── kaitongwaimai.svg
│ │ │ ├── kanjia.svg
│ │ │ ├── kefu.svg
│ │ │ ├── kejian.svg
│ │ │ ├── kejian_mian.svg
│ │ │ ├── keziyuyue.svg
│ │ │ ├── kezizhongxin.svg
│ │ │ ├── koubei.svg
│ │ │ ├── kuaijiehuifu.svg
│ │ │ ├── ladu_mian.svg
│ │ │ ├── lanyadingwei.svg
│ │ │ ├── list-2.svg
│ │ │ ├── mendiandongtai.svg
│ │ │ ├── mishiyuding.svg
│ │ │ ├── mishiyuding1.svg
│ │ │ ├── notice_buyer.svg
│ │ │ ├── open.svg
│ │ │ ├── paiduiquhao.svg
│ │ │ ├── paimai.svg
│ │ │ ├── pingjia.svg
│ │ │ ├── pingtaifapiao.svg
│ │ │ ├── pinpai.svg
│ │ │ ├── qianbao.svg
│ │ │ ├── qianbao_mian.svg
│ │ │ ├── qiehuan.svg
│ │ │ ├── qingchu.svg
│ │ │ ├── qingchu_mian.svg
│ │ │ ├── qishoupeisong.svg
│ │ │ ├── qiyedingcan.svg
│ │ │ ├── qiyedingcan1.svg
│ │ │ ├── quanbu.svg
│ │ │ ├── quanping.svg
│ │ │ ├── qudao.svg
│ │ │ ├── qudao_xiaochengxu.svg
│ │ │ ├── rencaizhaopin.svg
│ │ │ ├── rili.svg
│ │ │ ├── rili2.svg
│ │ │ ├── rizhi.svg
│ │ │ ├── saoma.svg
│ │ │ ├── set_pay.svg
│ │ │ ├── set_peisong.svg
│ │ │ ├── set_user.svg
│ │ │ ├── set_weihu.svg
│ │ │ ├── shanchu.svg
│ │ │ ├── shanchu_mian.svg
│ │ │ ├── shangchuan.svg
│ │ │ ├── shangchuanzhaopian.svg
│ │ │ ├── shangpinguanli.svg
│ │ │ ├── shangpinzhushou.svg
│ │ │ ├── shangpuyuding.svg
│ │ │ ├── shebeiguanli.svg
│ │ │ ├── shengfuwangputong.svg
│ │ │ ├── shengyin.svg
│ │ │ ├── shengyin_mian.svg
│ │ │ ├── shezhi.svg
│ │ │ ├── shezhi_mian.svg
│ │ │ ├── shichang.svg
│ │ │ ├── shichang_mian.svg
│ │ │ ├── shijian.svg
│ │ │ ├── shijian_mian.svg
│ │ │ ├── shoudan.svg
│ │ │ ├── shouqi.svg
│ │ │ ├── shouqi_mian.svg
│ │ │ ├── shouye.svg
│ │ │ ├── shouye_mian.svg
│ │ │ ├── shouyiren.svg
│ │ │ ├── show.svg
│ │ │ ├── shuangjiantouxiangyou.svg
│ │ │ ├── shuangjiantouxiangzuo.svg
│ │ │ ├── shuaxin.svg
│ │ │ ├── shuju.svg
│ │ │ ├── shuju2.svg
│ │ │ ├── shuju_liuliang.svg
│ │ │ ├── shuju_mian.svg
│ │ │ ├── sort.svg
│ │ │ ├── sousuo.svg
│ │ │ ├── sucai.svg
│ │ │ ├── tianjia.svg
│ │ │ ├── tishi.svg
│ │ │ ├── tishi_mian.svg
│ │ │ ├── tongxunlu_mian.svg
│ │ │ ├── tongzhi.svg
│ │ │ ├── tongzhi_mian.svg
│ │ │ ├── tuichuquanping.svg
│ │ │ ├── tuiguang.svg
│ │ │ ├── tuiguang_mian.svg
│ │ │ ├── tupian.svg
│ │ │ ├── tupian_mian.svg
│ │ │ ├── user_biaoqian.svg
│ │ │ ├── user_gaikuang.svg
│ │ │ ├── user_guanli.svg
│ │ │ ├── wangpudiandan.svg
│ │ │ ├── weixin.svg
│ │ │ ├── weixin_mian.svg
│ │ │ ├── wode.svg
│ │ │ ├── wode_mian.svg
│ │ │ ├── xiangji.svg
│ │ │ ├── xiaoxi.svg
│ │ │ ├── xiazai.svg
│ │ │ ├── xitongquanxian.svg
│ │ │ ├── yingxiao_qipao.svg
│ │ │ ├── yingyezizhi.svg
│ │ │ ├── yinhangka.svg
│ │ │ ├── yiwen.svg
│ │ │ ├── youhui.svg
│ │ │ ├── youjian.svg
│ │ │ ├── youjiantou.svg
│ │ │ ├── yulibao.svg
│ │ │ ├── yuyin.svg
│ │ │ ├── yuyueguanli.svg
│ │ │ ├── yuyueguanlishezhi.svg
│ │ │ ├── zhankai.svg
│ │ │ ├── zhankai_mian.svg
│ │ │ ├── zhibo.svg
│ │ │ ├── zhibo_mian.svg
│ │ │ ├── zhuangxiu.svg
│ │ │ ├── zhuangxiu_mian.svg
│ │ │ ├── zhuoweiguanli.svg
│ │ │ ├── zichanzhuanrang.svg
│ │ │ ├── zuliao.svg
│ │ │ └── zuliaoyuding.svg
│ │ └── images
│ │ │ ├── icon_folder.png
│ │ │ ├── no_perms.png
│ │ │ ├── theme_black.png
│ │ │ └── theme_white.png
│ ├── components
│ │ ├── app-link
│ │ │ └── index.vue
│ │ ├── color-picker
│ │ │ └── index.vue
│ │ ├── daterange-picker
│ │ │ └── index.vue
│ │ ├── del-wrap
│ │ │ └── index.vue
│ │ ├── dict-value
│ │ │ └── index.vue
│ │ ├── editor
│ │ │ └── index.vue
│ │ ├── footer-btns
│ │ │ └── index.vue
│ │ ├── icon
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── picker.vue
│ │ │ └── svg-icon.vue
│ │ ├── image-contain
│ │ │ └── index.vue
│ │ ├── link
│ │ │ ├── custom-link.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── picker.vue
│ │ │ └── shop-pages.vue
│ │ ├── material
│ │ │ ├── file.vue
│ │ │ ├── hook.ts
│ │ │ ├── index.vue
│ │ │ ├── picker.vue
│ │ │ └── preview.vue
│ │ ├── overflow-tooltip
│ │ │ └── index.vue
│ │ ├── pagination
│ │ │ └── index.vue
│ │ ├── popover-input
│ │ │ └── index.vue
│ │ ├── popup
│ │ │ └── index.vue
│ │ ├── upload
│ │ │ └── index.vue
│ │ └── video-player
│ │ │ └── index.vue
│ ├── config
│ │ ├── index.ts
│ │ └── setting.ts
│ ├── enums
│ │ ├── appEnums.ts
│ │ ├── cacheEnums.ts
│ │ ├── pageEnum.ts
│ │ └── requestEnums.ts
│ ├── hooks
│ │ ├── useDictOptions.ts
│ │ ├── useLockFn.ts
│ │ ├── useMultipleTabs.ts
│ │ ├── usePaging.ts
│ │ └── useWatchRoute.ts
│ ├── install
│ │ ├── directives
│ │ │ ├── copy.ts
│ │ │ └── perms.ts
│ │ ├── index.ts
│ │ └── plugins
│ │ │ ├── echart.ts
│ │ │ ├── element.ts
│ │ │ ├── hljs.ts
│ │ │ ├── pinia.ts
│ │ │ └── router.ts
│ ├── layout
│ │ ├── components
│ │ │ └── footer.vue
│ │ └── default
│ │ │ ├── components
│ │ │ ├── header
│ │ │ │ ├── breadcrumb.vue
│ │ │ │ ├── fold.vue
│ │ │ │ ├── full-screen.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── multiple-tabs.vue
│ │ │ │ ├── refresh.vue
│ │ │ │ └── user-drop-down.vue
│ │ │ ├── main.vue
│ │ │ ├── setting
│ │ │ │ ├── drawer.vue
│ │ │ │ └── index.vue
│ │ │ └── sidebar
│ │ │ │ ├── index.vue
│ │ │ │ ├── logo.vue
│ │ │ │ ├── menu-item.vue
│ │ │ │ ├── menu.vue
│ │ │ │ └── side.vue
│ │ │ └── index.vue
│ ├── likeadmin_python.code-workspace
│ ├── main.ts
│ ├── permission.ts
│ ├── router
│ │ ├── index.ts
│ │ └── routes.ts
│ ├── stores
│ │ ├── index.ts
│ │ └── modules
│ │ │ ├── app.ts
│ │ │ ├── multipleTabs.ts
│ │ │ ├── setting.ts
│ │ │ └── user.ts
│ ├── styles
│ │ ├── dark.css
│ │ ├── element.scss
│ │ ├── index.scss
│ │ ├── public.scss
│ │ ├── tailwind.css
│ │ └── var.css
│ ├── utils
│ │ ├── auth.ts
│ │ ├── cache.ts
│ │ ├── env.ts
│ │ ├── feedback.ts
│ │ ├── file.ts
│ │ ├── request
│ │ │ ├── axios.ts
│ │ │ ├── cancel.ts
│ │ │ ├── index.ts
│ │ │ └── type.d.ts
│ │ ├── theme.ts
│ │ ├── util.ts
│ │ └── validate.ts
│ └── views
│ │ ├── account
│ │ ├── images
│ │ │ └── login_bg.png
│ │ └── login.vue
│ │ ├── article
│ │ ├── column
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ └── lists
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── channel
│ │ ├── h5.vue
│ │ ├── weapp.vue
│ │ ├── wx_dev.vue
│ │ └── wx_oa
│ │ │ ├── config.vue
│ │ │ ├── menu.vue
│ │ │ ├── menu_com
│ │ │ ├── oa-attr.vue
│ │ │ ├── oa-menu-form-edit.vue
│ │ │ ├── oa-menu-form.vue
│ │ │ ├── oa-phone.vue
│ │ │ └── useMenuOa.ts
│ │ │ └── reply
│ │ │ ├── default_reply.vue
│ │ │ ├── edit.vue
│ │ │ ├── follow_reply.vue
│ │ │ └── keyword_reply.vue
│ │ ├── consumer
│ │ └── lists
│ │ │ ├── detail.vue
│ │ │ └── index.vue
│ │ ├── decoration
│ │ ├── component
│ │ │ ├── add-nav.vue
│ │ │ ├── decoration-img.vue
│ │ │ ├── pages
│ │ │ │ ├── attr-setting.vue
│ │ │ │ ├── menu.vue
│ │ │ │ └── preview.vue
│ │ │ └── widgets
│ │ │ │ ├── banner
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── customer-service
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── my-service
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── nav
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── news
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── search
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ ├── user-banner
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ │ │ └── user-info
│ │ │ │ ├── attr.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── images
│ │ │ │ ├── default_avatar.png
│ │ │ │ └── my_topbg.png
│ │ │ │ ├── index.ts
│ │ │ │ └── options.ts
│ │ ├── pages
│ │ │ └── index.vue
│ │ └── tabbar.vue
│ │ ├── dev_tools
│ │ ├── code
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ └── components
│ │ │ ├── code-preview.vue
│ │ │ └── data-table.vue
│ │ ├── error
│ │ ├── 403.vue
│ │ ├── 404.vue
│ │ └── components
│ │ │ └── error.vue
│ │ ├── material
│ │ └── index.vue
│ │ ├── message
│ │ ├── notice
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ └── short_letter
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── organization
│ │ ├── department
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ └── post
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── permission
│ │ ├── admin
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── menu
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ └── role
│ │ │ ├── auth.vue
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── setting
│ │ ├── dict
│ │ │ ├── data
│ │ │ │ ├── edit.vue
│ │ │ │ └── index.vue
│ │ │ └── type
│ │ │ │ ├── edit.vue
│ │ │ │ └── index.vue
│ │ ├── search
│ │ │ └── index.vue
│ │ ├── storage
│ │ │ ├── edit.vue
│ │ │ └── index.vue
│ │ ├── system
│ │ │ ├── cache.vue
│ │ │ ├── environment.vue
│ │ │ └── journal.vue
│ │ ├── user
│ │ │ ├── login_register.vue
│ │ │ └── setup.vue
│ │ └── website
│ │ │ ├── filing.vue
│ │ │ ├── information.vue
│ │ │ └── protocol.vue
│ │ ├── user
│ │ └── setting.vue
│ │ └── workbench
│ │ ├── image
│ │ ├── BrowserPreview_tmp.png
│ │ ├── menu_admin.png
│ │ ├── menu_auth.png
│ │ ├── menu_dept.png
│ │ ├── menu_dict.png
│ │ ├── menu_file.png
│ │ ├── menu_generator.png
│ │ ├── menu_role.png
│ │ ├── menu_web.png
│ │ └── qq_group.png
│ │ └── index.vue
├── tailwind.config.js
├── tsconfig.config.json
├── tsconfig.json
├── typings
│ ├── index.d.ts
│ └── router.d.ts
└── vite.config.ts
├── docker
├── .gitignore
├── config
│ └── mysql
│ │ └── mysqld.cnf
└── docker-compose.yml
├── frontend
├── assets
│ ├── 403.883c569e.js
│ ├── 404.154d0f45.js
│ ├── @ctrl.fd318bfa.js
│ ├── @element-plus.3660753f.js
│ ├── @floating-ui.dd8b295f.js
│ ├── @highlightjs.7fc78ec7.js
│ ├── @popperjs.36402333.js
│ ├── @vue.a137a740.js
│ ├── @vueuse.07613b64.js
│ ├── @wangeditor.501cf061.css
│ ├── @wangeditor.e356e69e.js
│ ├── BrowserPreview_tmp.f88b03df.png
│ ├── add-nav.c9eb04eb.js
│ ├── add-nav.vue_vue_type_script_setup_true_lang.4eccb1b5.js
│ ├── article.eeed3520.js
│ ├── async-validator.fb49d0f5.js
│ ├── attr-setting.07c0c703.js
│ ├── attr-setting.vue_vue_type_script_setup_true_lang.79deee70.js
│ ├── attr.15bf174a.js
│ ├── attr.487363e2.js
│ ├── attr.7438b6b3.js
│ ├── attr.8ec14385.js
│ ├── attr.ad012d89.js
│ ├── attr.d3150e80.js
│ ├── attr.db9092b2.js
│ ├── attr.ea47640a.js
│ ├── attr.vue_vue_type_script_setup_true_lang.0af4da96.js
│ ├── attr.vue_vue_type_script_setup_true_lang.286479e2.js
│ ├── attr.vue_vue_type_script_setup_true_lang.42469fb3.js
│ ├── attr.vue_vue_type_script_setup_true_lang.9653ec08.js
│ ├── attr.vue_vue_type_script_setup_true_lang.9820b9a5.js
│ ├── attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js
│ ├── attr.vue_vue_type_script_setup_true_lang.e5ff36d3.js
│ ├── attr.vue_vue_type_script_setup_true_lang.ed995f26.js
│ ├── auth.675f9d7a.js
│ ├── auth.vue_vue_type_script_setup_true_lang.8abe420c.js
│ ├── axios.317db7a7.js
│ ├── balanced-match.d2a36341.js
│ ├── cache.b08e0053.css
│ ├── cache.c16fd5bf.js
│ ├── clipboard.e9b83688.js
│ ├── clone.a10503d0.js
│ ├── code-preview.6cd1c185.js
│ ├── code-preview.vue_vue_type_script_setup_true_lang.557f935e.js
│ ├── code.34d3c9c5.js
│ ├── color-convert.755d189f.js
│ ├── color-name.e7a4e1d3.js
│ ├── color-string.e356f5de.js
│ ├── color.3683ba49.js
│ ├── config.9da612b1.js
│ ├── consumer.e63bb0ad.js
│ ├── content.05a5ad66.js
│ ├── content.08aa6061.js
│ ├── content.34a1bf06.js
│ ├── content.58f7c7c8.js
│ ├── content.75595e09.css
│ ├── content.7a3c8721.js
│ ├── content.946314b3.js
│ ├── content.9f244b19.css
│ ├── content.c1421a4b.js
│ ├── content.c40e4b89.css
│ ├── content.c9a2d497.css
│ ├── content.d2e6e515.js
│ ├── content.efb8af20.css
│ ├── content.vue_vue_type_script_setup_true_lang.12563a6c.js
│ ├── content.vue_vue_type_script_setup_true_lang.43e08694.js
│ ├── content.vue_vue_type_script_setup_true_lang.c47a6b69.js
│ ├── css-color-function.32b8b184.js
│ ├── data-table.c712dccf.js
│ ├── data-table.vue_vue_type_script_setup_true_lang.3118650f.js
│ ├── dayjs.4eb0747d.js
│ ├── decoration-img.a64d82f7.css
│ ├── decoration-img.e2c4084c.js
│ ├── decoration.ab9ddaa9.js
│ ├── default_avatar.fa19527b.png
│ ├── default_reply.85746eb6.js
│ ├── department.a2353fbd.js
│ ├── detail.4417cbc6.js
│ ├── dict.7219bd74.js
│ ├── echarts.7e912674.js
│ ├── edit.068b4bd6.js
│ ├── edit.07cfb7c1.js
│ ├── edit.090fe7f5.js
│ ├── edit.1205cc58.js
│ ├── edit.1bd0002d.js
│ ├── edit.1f7db440.js
│ ├── edit.32d42425.js
│ ├── edit.35cc3413.js
│ ├── edit.55dec7e2.js
│ ├── edit.8390afed.js
│ ├── edit.8ca3862c.js
│ ├── edit.90219ae5.js
│ ├── edit.e44b7d72.js
│ ├── edit.e45d328d.js
│ ├── edit.vue_vue_type_script_setup_true_lang.049939c0.js
│ ├── edit.vue_vue_type_script_setup_true_lang.21575a13.js
│ ├── edit.vue_vue_type_script_setup_true_lang.3c212956.js
│ ├── edit.vue_vue_type_script_setup_true_lang.48339522.js
│ ├── edit.vue_vue_type_script_setup_true_lang.657c933f.js
│ ├── edit.vue_vue_type_script_setup_true_lang.70088f77.js
│ ├── edit.vue_vue_type_script_setup_true_lang.77cf5016.js
│ ├── edit.vue_vue_type_script_setup_true_lang.79e5ce2b.js
│ ├── edit.vue_vue_type_script_setup_true_lang.7b7cba97.js
│ ├── edit.vue_vue_type_script_setup_true_lang.c9b47d4c.js
│ ├── edit.vue_vue_type_script_setup_true_lang.fe50cbb8.js
│ ├── element-plus.41b212f5.css
│ ├── element-plus.ef27c94c.js
│ ├── environment.06dead9b.js
│ ├── error.be93caf8.css
│ ├── error.fb025926.js
│ ├── escape-html.e5dfadb9.js
│ ├── filing.581fce73.js
│ ├── follow_reply.486c794e.js
│ ├── h5.50d13726.js
│ ├── highlight.5f5db245.css
│ ├── highlight.js.7165574c.js
│ ├── index.00854a6a.js
│ ├── index.0a86536b.js
│ ├── index.0b1bf1d7.js
│ ├── index.0d25a475.css
│ ├── index.118ecd42.css
│ ├── index.15f50578.css
│ ├── index.184539bc.css
│ ├── index.1ea053f4.js
│ ├── index.2a55a6b3.css
│ ├── index.2ace3fcf.css
│ ├── index.2f038234.js
│ ├── index.304c54fe.js
│ ├── index.310dbf76.js
│ ├── index.40e4ece8.js
│ ├── index.4914356c.js
│ ├── index.5459dbed.js
│ ├── index.65e4d753.js
│ ├── index.68592469.js
│ ├── index.6fd6879a.js
│ ├── index.796a76b8.js
│ ├── index.7e7fd4b4.js
│ ├── index.8ba3e691.js
│ ├── index.9066eeb6.js
│ ├── index.9bce7fe7.css
│ ├── index.9eba779b.js
│ ├── index.a318de61.css
│ ├── index.aecdfa78.css
│ ├── index.b60a26c4.js
│ ├── index.b96eee8c.js
│ ├── index.be29c95e.css
│ ├── index.c29414e6.js
│ ├── index.d37c8696.js
│ ├── index.e908ee62.js
│ ├── index.fd5ca83c.js
│ ├── index.vue_vue_type_script_setup_true_lang.406be744.js
│ ├── index.vue_vue_type_script_setup_true_lang.c58ce5d0.js
│ ├── index.vue_vue_type_style_index_0_lang.bf6ba2fa.js
│ ├── information.b0f4a18d.js
│ ├── journal.00b2c9ff.js
│ ├── keyword_reply.9005b1a5.js
│ ├── lodash-es.a31ceab4.js
│ ├── lodash-unified.d120b703.js
│ ├── lodash.329a9ebf.js
│ ├── login.343b5475.css
│ ├── login.67cf91dd.js
│ ├── login_bg.2f630cea.png
│ ├── login_register.0f5c5c70.js
│ ├── memoize-one.5eaee740.js
│ ├── menu.05665f74.js
│ ├── menu.2c5749e7.js
│ ├── menu.52becb26.js
│ ├── menu.a050bec6.css
│ ├── menu_role.4823a023.png
│ ├── message.8c01f477.js
│ ├── ms.564e106c.js
│ ├── my_topbg.137a6c56.png
│ ├── no_perms.a56e95a5.png
│ ├── normalize-wheel-es.8aeb3683.js
│ ├── nprogress.c50c242d.js
│ ├── nprogress.f5128a35.css
│ ├── oa-attr.efe92cd1.js
│ ├── oa-menu-form-edit.1323994e.js
│ ├── oa-menu-form-edit.vue_vue_type_script_setup_true_lang.dfb5b938.js
│ ├── oa-menu-form.fa03fb29.js
│ ├── oa-menu-form.vue_vue_type_script_setup_true_lang.c6ba9302.js
│ ├── oa-phone.26486266.js
│ ├── oa-phone.8b9170e2.css
│ ├── picker.05436930.css
│ ├── picker.34f033cd.js
│ ├── picker.5357a91f.css
│ ├── picker.c2491a62.js
│ ├── pinia.9b4180ce.js
│ ├── post.2ca46716.js
│ ├── preview.3b66704b.js
│ ├── preview.6e931073.css
│ ├── protocol.961b1e27.js
│ ├── qq_group.3084d316.png
│ ├── resize-detector.4e96b72b.js
│ ├── role.6aeb8c72.js
│ ├── setting.4f75ad07.js
│ ├── setup.44af3385.js
│ ├── sortablejs.cffe02b4.js
│ ├── system.1b516774.js
│ ├── tabbar.75f7a8d8.css
│ ├── tabbar.c0b0c422.js
│ ├── tslib.60310f1a.js
│ ├── useDictOptions.b9a39236.js
│ ├── useMenuOa.4d1e2306.js
│ ├── usePaging.c15919e0.js
│ ├── user.883bd654.js
│ ├── vue-clipboard3.51d666ae.js
│ ├── vue-echarts.ab8d3915.js
│ ├── vue-router.9605b890.js
│ ├── vue.de363efb.js
│ ├── vue3-video-play.74881f83.css
│ ├── vue3-video-play.b1eef99b.js
│ ├── vuedraggable.0ebeab5f.js
│ ├── weapp.901acff4.js
│ ├── website.67499d41.js
│ ├── wx_dev.29d7c05e.js
│ ├── wx_oa.29fa83b3.js
│ └── zrender.754e8e90.js
└── index.html
├── h5
├── assets
│ ├── account.55f2d7a8.js
│ ├── appEnums.a2ba827b.js
│ ├── as_us.a2f8b82c.css
│ ├── bind_mobile.883a800d.css
│ ├── change_password.426e67e4.css
│ ├── client.68d036db.js
│ ├── collection.c4157529.css
│ ├── forget_pwd.c3cfcc99.css
│ ├── icon_visit.21b6ed3b.js
│ ├── icon_wx.a848c744.png
│ ├── index.40995080.css
│ ├── index.cfa79457.js
│ ├── index.d7cfcc94.css
│ ├── login.01e52ca6.css
│ ├── news-card.1c7f3f5c.js
│ ├── news-card.9d2e9b2e.css
│ ├── news.c70d38d5.js
│ ├── news.cf577e19.css
│ ├── news_detail.3a6411e3.css
│ ├── pages-agreement-agreement.950d45dd.js
│ ├── pages-as_us-as_us.0f4583ac.js
│ ├── pages-bind_mobile-bind_mobile.8c0984e5.js
│ ├── pages-change_password-change_password.368fada0.js
│ ├── pages-collection-collection.be226c68.js
│ ├── pages-customer_service-customer_service.1c74b460.js
│ ├── pages-empty-empty.b0d17a0b.js
│ ├── pages-forget_pwd-forget_pwd.ec83f574.js
│ ├── pages-index-index.228a7b41.js
│ ├── pages-login-login.d8908ca6.js
│ ├── pages-news-news.bd6814fc.js
│ ├── pages-news_detail-news_detail.b6624deb.js
│ ├── pages-register-register.0ed93c7a.js
│ ├── pages-search-search.cdeefc74.js
│ ├── pages-user-user.a7047c05.js
│ ├── pages-user_data-user_data.207ce7db.js
│ ├── pages-user_set-user_set.ef11c266.js
│ ├── pages-webview-webview.3ceac09f.js
│ ├── plugin-vue_export-helper.21dcd24c.js
│ ├── register.7aa73084.css
│ ├── search.5426327c.css
│ ├── shop.1aa20054.js
│ ├── tabbar.0b704f32.js
│ ├── tabbar.7dfafcaa.css
│ ├── u-avatar-cropper.91a54bb1.css
│ ├── u-avatar.462c9953.js
│ ├── u-avatar.dfe1b6cb.css
│ ├── u-button.3c53a2f3.js
│ ├── u-button.48af928a.css
│ ├── u-checkbox.4f7151e8.js
│ ├── u-checkbox.c93b1db2.css
│ ├── u-form-item.e55e5c90.css
│ ├── u-form-item.fa4e8c2b.js
│ ├── u-form.bc14ea02.js
│ ├── u-icon.48804dd6.js
│ ├── u-icon.81bcc25e.css
│ ├── u-image.a2832593.js
│ ├── u-image.a7813cd9.css
│ ├── u-parse.09d7a9f1.js
│ ├── u-parse.93f983af.css
│ ├── u-popup.399adda1.js
│ ├── u-popup.3b64afbe.css
│ ├── u-search.35cfd0ff.css
│ ├── u-search.bfe2ddde.js
│ ├── u-verification-code.bee3c9e7.js
│ ├── u-verification-code.e967c1e9.css
│ ├── uni.da0b3986.css
│ ├── uni_modules-vk-uview-ui-components-u-avatar-cropper-u-avatar-cropper.05e3bd31.js
│ ├── user.4b21793f.css
│ ├── user_data.d05d0eea.css
│ ├── user_set.e61ca628.css
│ ├── util.f31571a8.js
│ ├── z-paging.7a94f2f9.css
│ └── z-paging.7b1a9879.js
├── index.html
└── static
│ └── images
│ ├── icon
│ ├── icon_code.png
│ ├── icon_mobile.png
│ ├── icon_password.png
│ ├── icon_user.png
│ ├── icon_visit.png
│ └── icon_wx.png
│ ├── tabs
│ ├── home.png
│ ├── home_s.png
│ ├── news.png
│ ├── news_s.png
│ ├── user.png
│ └── user_s.png
│ └── user
│ ├── default_avatar.png
│ └── my_topbg.png
├── public
├── admin
│ ├── assets
│ │ ├── 403.883c569e.js
│ │ ├── 404.154d0f45.js
│ │ ├── @ctrl.fd318bfa.js
│ │ ├── @element-plus.3660753f.js
│ │ ├── @floating-ui.dd8b295f.js
│ │ ├── @highlightjs.7fc78ec7.js
│ │ ├── @popperjs.36402333.js
│ │ ├── @vue.a137a740.js
│ │ ├── @vueuse.07613b64.js
│ │ ├── @wangeditor.501cf061.css
│ │ ├── @wangeditor.e356e69e.js
│ │ ├── BrowserPreview_tmp.f88b03df.png
│ │ ├── add-nav.c9eb04eb.js
│ │ ├── add-nav.vue_vue_type_script_setup_true_lang.4eccb1b5.js
│ │ ├── article.eeed3520.js
│ │ ├── async-validator.fb49d0f5.js
│ │ ├── attr-setting.07c0c703.js
│ │ ├── attr-setting.vue_vue_type_script_setup_true_lang.79deee70.js
│ │ ├── attr.15bf174a.js
│ │ ├── attr.487363e2.js
│ │ ├── attr.7438b6b3.js
│ │ ├── attr.8ec14385.js
│ │ ├── attr.ad012d89.js
│ │ ├── attr.d3150e80.js
│ │ ├── attr.db9092b2.js
│ │ ├── attr.ea47640a.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.0af4da96.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.286479e2.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.42469fb3.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.9653ec08.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.9820b9a5.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.e5ff36d3.js
│ │ ├── attr.vue_vue_type_script_setup_true_lang.ed995f26.js
│ │ ├── auth.675f9d7a.js
│ │ ├── auth.vue_vue_type_script_setup_true_lang.8abe420c.js
│ │ ├── axios.317db7a7.js
│ │ ├── balanced-match.d2a36341.js
│ │ ├── cache.b08e0053.css
│ │ ├── cache.c16fd5bf.js
│ │ ├── clipboard.e9b83688.js
│ │ ├── clone.a10503d0.js
│ │ ├── code-preview.6cd1c185.js
│ │ ├── code-preview.vue_vue_type_script_setup_true_lang.557f935e.js
│ │ ├── code.34d3c9c5.js
│ │ ├── color-convert.755d189f.js
│ │ ├── color-name.e7a4e1d3.js
│ │ ├── color-string.e356f5de.js
│ │ ├── color.3683ba49.js
│ │ ├── config.9da612b1.js
│ │ ├── consumer.e63bb0ad.js
│ │ ├── content.05a5ad66.js
│ │ ├── content.08aa6061.js
│ │ ├── content.34a1bf06.js
│ │ ├── content.58f7c7c8.js
│ │ ├── content.75595e09.css
│ │ ├── content.7a3c8721.js
│ │ ├── content.946314b3.js
│ │ ├── content.9f244b19.css
│ │ ├── content.c1421a4b.js
│ │ ├── content.c40e4b89.css
│ │ ├── content.c9a2d497.css
│ │ ├── content.d2e6e515.js
│ │ ├── content.efb8af20.css
│ │ ├── content.vue_vue_type_script_setup_true_lang.12563a6c.js
│ │ ├── content.vue_vue_type_script_setup_true_lang.43e08694.js
│ │ ├── content.vue_vue_type_script_setup_true_lang.c47a6b69.js
│ │ ├── css-color-function.32b8b184.js
│ │ ├── data-table.c712dccf.js
│ │ ├── data-table.vue_vue_type_script_setup_true_lang.3118650f.js
│ │ ├── dayjs.4eb0747d.js
│ │ ├── decoration-img.a64d82f7.css
│ │ ├── decoration-img.e2c4084c.js
│ │ ├── decoration.ab9ddaa9.js
│ │ ├── default_avatar.fa19527b.png
│ │ ├── default_reply.85746eb6.js
│ │ ├── department.a2353fbd.js
│ │ ├── detail.4417cbc6.js
│ │ ├── dict.7219bd74.js
│ │ ├── echarts.7e912674.js
│ │ ├── edit.068b4bd6.js
│ │ ├── edit.07cfb7c1.js
│ │ ├── edit.090fe7f5.js
│ │ ├── edit.1205cc58.js
│ │ ├── edit.1bd0002d.js
│ │ ├── edit.1f7db440.js
│ │ ├── edit.32d42425.js
│ │ ├── edit.35cc3413.js
│ │ ├── edit.55dec7e2.js
│ │ ├── edit.8390afed.js
│ │ ├── edit.8ca3862c.js
│ │ ├── edit.90219ae5.js
│ │ ├── edit.e44b7d72.js
│ │ ├── edit.e45d328d.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.049939c0.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.21575a13.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.3c212956.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.48339522.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.657c933f.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.70088f77.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.77cf5016.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.79e5ce2b.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.7b7cba97.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.c9b47d4c.js
│ │ ├── edit.vue_vue_type_script_setup_true_lang.fe50cbb8.js
│ │ ├── element-plus.41b212f5.css
│ │ ├── element-plus.ef27c94c.js
│ │ ├── environment.06dead9b.js
│ │ ├── error.be93caf8.css
│ │ ├── error.fb025926.js
│ │ ├── escape-html.e5dfadb9.js
│ │ ├── filing.581fce73.js
│ │ ├── follow_reply.486c794e.js
│ │ ├── h5.50d13726.js
│ │ ├── highlight.5f5db245.css
│ │ ├── highlight.js.7165574c.js
│ │ ├── index.00854a6a.js
│ │ ├── index.0a86536b.js
│ │ ├── index.0b1bf1d7.js
│ │ ├── index.0d25a475.css
│ │ ├── index.118ecd42.css
│ │ ├── index.15f50578.css
│ │ ├── index.184539bc.css
│ │ ├── index.1ea053f4.js
│ │ ├── index.2a55a6b3.css
│ │ ├── index.2ace3fcf.css
│ │ ├── index.2f038234.js
│ │ ├── index.304c54fe.js
│ │ ├── index.310dbf76.js
│ │ ├── index.40e4ece8.js
│ │ ├── index.4914356c.js
│ │ ├── index.5459dbed.js
│ │ ├── index.65e4d753.js
│ │ ├── index.68592469.js
│ │ ├── index.6fd6879a.js
│ │ ├── index.796a76b8.js
│ │ ├── index.7e7fd4b4.js
│ │ ├── index.8ba3e691.js
│ │ ├── index.9066eeb6.js
│ │ ├── index.9bce7fe7.css
│ │ ├── index.9eba779b.js
│ │ ├── index.a318de61.css
│ │ ├── index.aecdfa78.css
│ │ ├── index.b60a26c4.js
│ │ ├── index.b96eee8c.js
│ │ ├── index.be29c95e.css
│ │ ├── index.c29414e6.js
│ │ ├── index.d37c8696.js
│ │ ├── index.e908ee62.js
│ │ ├── index.fd5ca83c.js
│ │ ├── index.vue_vue_type_script_setup_true_lang.406be744.js
│ │ ├── index.vue_vue_type_script_setup_true_lang.c58ce5d0.js
│ │ ├── index.vue_vue_type_style_index_0_lang.bf6ba2fa.js
│ │ ├── information.b0f4a18d.js
│ │ ├── journal.00b2c9ff.js
│ │ ├── keyword_reply.9005b1a5.js
│ │ ├── lodash-es.a31ceab4.js
│ │ ├── lodash-unified.d120b703.js
│ │ ├── lodash.329a9ebf.js
│ │ ├── login.343b5475.css
│ │ ├── login.67cf91dd.js
│ │ ├── login_bg.2f630cea.png
│ │ ├── login_register.0f5c5c70.js
│ │ ├── memoize-one.5eaee740.js
│ │ ├── menu.05665f74.js
│ │ ├── menu.2c5749e7.js
│ │ ├── menu.52becb26.js
│ │ ├── menu.a050bec6.css
│ │ ├── menu_role.4823a023.png
│ │ ├── message.8c01f477.js
│ │ ├── ms.564e106c.js
│ │ ├── my_topbg.137a6c56.png
│ │ ├── no_perms.a56e95a5.png
│ │ ├── normalize-wheel-es.8aeb3683.js
│ │ ├── nprogress.c50c242d.js
│ │ ├── nprogress.f5128a35.css
│ │ ├── oa-attr.efe92cd1.js
│ │ ├── oa-menu-form-edit.1323994e.js
│ │ ├── oa-menu-form-edit.vue_vue_type_script_setup_true_lang.dfb5b938.js
│ │ ├── oa-menu-form.fa03fb29.js
│ │ ├── oa-menu-form.vue_vue_type_script_setup_true_lang.c6ba9302.js
│ │ ├── oa-phone.26486266.js
│ │ ├── oa-phone.8b9170e2.css
│ │ ├── picker.05436930.css
│ │ ├── picker.34f033cd.js
│ │ ├── picker.5357a91f.css
│ │ ├── picker.c2491a62.js
│ │ ├── pinia.9b4180ce.js
│ │ ├── post.2ca46716.js
│ │ ├── preview.3b66704b.js
│ │ ├── preview.6e931073.css
│ │ ├── protocol.961b1e27.js
│ │ ├── qq_group.3084d316.png
│ │ ├── resize-detector.4e96b72b.js
│ │ ├── role.6aeb8c72.js
│ │ ├── setting.4f75ad07.js
│ │ ├── setup.44af3385.js
│ │ ├── sortablejs.cffe02b4.js
│ │ ├── system.1b516774.js
│ │ ├── tabbar.75f7a8d8.css
│ │ ├── tabbar.c0b0c422.js
│ │ ├── tslib.60310f1a.js
│ │ ├── useDictOptions.b9a39236.js
│ │ ├── useMenuOa.4d1e2306.js
│ │ ├── usePaging.c15919e0.js
│ │ ├── user.883bd654.js
│ │ ├── vue-clipboard3.51d666ae.js
│ │ ├── vue-echarts.ab8d3915.js
│ │ ├── vue-router.9605b890.js
│ │ ├── vue.de363efb.js
│ │ ├── vue3-video-play.74881f83.css
│ │ ├── vue3-video-play.b1eef99b.js
│ │ ├── vuedraggable.0ebeab5f.js
│ │ ├── weapp.901acff4.js
│ │ ├── website.67499d41.js
│ │ ├── wx_dev.29d7c05e.js
│ │ ├── wx_oa.29fa83b3.js
│ │ └── zrender.754e8e90.js
│ └── index.html
├── index.html
├── mobile
│ ├── assets
│ │ ├── account.55f2d7a8.js
│ │ ├── appEnums.a2ba827b.js
│ │ ├── as_us.a2f8b82c.css
│ │ ├── bind_mobile.883a800d.css
│ │ ├── change_password.426e67e4.css
│ │ ├── client.68d036db.js
│ │ ├── collection.c4157529.css
│ │ ├── forget_pwd.c3cfcc99.css
│ │ ├── icon_visit.21b6ed3b.js
│ │ ├── icon_wx.a848c744.png
│ │ ├── index.40995080.css
│ │ ├── index.cfa79457.js
│ │ ├── index.d7cfcc94.css
│ │ ├── login.01e52ca6.css
│ │ ├── news-card.1c7f3f5c.js
│ │ ├── news-card.9d2e9b2e.css
│ │ ├── news.c70d38d5.js
│ │ ├── news.cf577e19.css
│ │ ├── news_detail.3a6411e3.css
│ │ ├── pages-agreement-agreement.950d45dd.js
│ │ ├── pages-as_us-as_us.0f4583ac.js
│ │ ├── pages-bind_mobile-bind_mobile.8c0984e5.js
│ │ ├── pages-change_password-change_password.368fada0.js
│ │ ├── pages-collection-collection.be226c68.js
│ │ ├── pages-customer_service-customer_service.1c74b460.js
│ │ ├── pages-empty-empty.b0d17a0b.js
│ │ ├── pages-forget_pwd-forget_pwd.ec83f574.js
│ │ ├── pages-index-index.228a7b41.js
│ │ ├── pages-login-login.d8908ca6.js
│ │ ├── pages-news-news.bd6814fc.js
│ │ ├── pages-news_detail-news_detail.b6624deb.js
│ │ ├── pages-register-register.0ed93c7a.js
│ │ ├── pages-search-search.cdeefc74.js
│ │ ├── pages-user-user.a7047c05.js
│ │ ├── pages-user_data-user_data.207ce7db.js
│ │ ├── pages-user_set-user_set.ef11c266.js
│ │ ├── pages-webview-webview.3ceac09f.js
│ │ ├── plugin-vue_export-helper.21dcd24c.js
│ │ ├── register.7aa73084.css
│ │ ├── search.5426327c.css
│ │ ├── shop.1aa20054.js
│ │ ├── tabbar.0b704f32.js
│ │ ├── tabbar.7dfafcaa.css
│ │ ├── u-avatar-cropper.91a54bb1.css
│ │ ├── u-avatar.462c9953.js
│ │ ├── u-avatar.dfe1b6cb.css
│ │ ├── u-button.3c53a2f3.js
│ │ ├── u-button.48af928a.css
│ │ ├── u-checkbox.4f7151e8.js
│ │ ├── u-checkbox.c93b1db2.css
│ │ ├── u-form-item.e55e5c90.css
│ │ ├── u-form-item.fa4e8c2b.js
│ │ ├── u-form.bc14ea02.js
│ │ ├── u-icon.48804dd6.js
│ │ ├── u-icon.81bcc25e.css
│ │ ├── u-image.a2832593.js
│ │ ├── u-image.a7813cd9.css
│ │ ├── u-parse.09d7a9f1.js
│ │ ├── u-parse.93f983af.css
│ │ ├── u-popup.399adda1.js
│ │ ├── u-popup.3b64afbe.css
│ │ ├── u-search.35cfd0ff.css
│ │ ├── u-search.bfe2ddde.js
│ │ ├── u-verification-code.bee3c9e7.js
│ │ ├── u-verification-code.e967c1e9.css
│ │ ├── uni.da0b3986.css
│ │ ├── uni_modules-vk-uview-ui-components-u-avatar-cropper-u-avatar-cropper.05e3bd31.js
│ │ ├── user.4b21793f.css
│ │ ├── user_data.d05d0eea.css
│ │ ├── user_set.e61ca628.css
│ │ ├── util.f31571a8.js
│ │ ├── z-paging.7a94f2f9.css
│ │ └── z-paging.7b1a9879.js
│ ├── index.html
│ └── static
│ │ └── images
│ │ ├── icon
│ │ ├── icon_code.png
│ │ ├── icon_mobile.png
│ │ ├── icon_password.png
│ │ ├── icon_user.png
│ │ ├── icon_visit.png
│ │ └── icon_wx.png
│ │ ├── tabs
│ │ ├── home.png
│ │ ├── home_s.png
│ │ ├── news.png
│ │ ├── news_s.png
│ │ ├── user.png
│ │ └── user_s.png
│ │ └── user
│ │ ├── default_avatar.png
│ │ └── my_topbg.png
└── uploads
│ └── index.html
├── server
├── .example.env
├── .gitignore
├── __init__.py
├── asgi.py
├── asgi_front.py
├── cli
│ ├── __init__.py
│ ├── db_helper.py
│ └── env.py
├── like
│ ├── __init__.py
│ ├── admin
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── routers
│ │ │ ├── __init__.py
│ │ │ ├── article.py
│ │ │ ├── channel.py
│ │ │ ├── common.py
│ │ │ ├── decorate.py
│ │ │ ├── monitor.py
│ │ │ ├── setting.py
│ │ │ ├── system.py
│ │ │ └── user.py
│ │ ├── schemas
│ │ │ ├── __init__.py
│ │ │ ├── article.py
│ │ │ ├── channel.py
│ │ │ ├── common.py
│ │ │ ├── decorate.py
│ │ │ ├── setting.py
│ │ │ ├── system.py
│ │ │ └── user.py
│ │ └── service
│ │ │ ├── __init__.py
│ │ │ ├── article
│ │ │ ├── __init__.py
│ │ │ ├── article.py
│ │ │ └── article_cate.py
│ │ │ ├── channel
│ │ │ ├── __init__.py
│ │ │ ├── h5.py
│ │ │ ├── mp.py
│ │ │ ├── oa.py
│ │ │ ├── oa_menu.py
│ │ │ ├── oa_reply_default.py
│ │ │ ├── oa_reply_follow.py
│ │ │ ├── oa_reply_keyword.py
│ │ │ └── wx.py
│ │ │ ├── common
│ │ │ ├── __init__.py
│ │ │ ├── album.py
│ │ │ ├── index.py
│ │ │ └── upload.py
│ │ │ ├── decorate
│ │ │ ├── __init__.py
│ │ │ ├── data_article.py
│ │ │ ├── page.py
│ │ │ └── tabbar.py
│ │ │ ├── setting
│ │ │ ├── __init__.py
│ │ │ ├── copyright.py
│ │ │ ├── dict_manager.py
│ │ │ ├── login.py
│ │ │ ├── notice.py
│ │ │ ├── protocol.py
│ │ │ ├── search.py
│ │ │ ├── sms.py
│ │ │ ├── storage_service.py
│ │ │ ├── user.py
│ │ │ └── website.py
│ │ │ ├── system
│ │ │ ├── __init__.py
│ │ │ ├── auth_admin.py
│ │ │ ├── auth_dept.py
│ │ │ ├── auth_menu.py
│ │ │ ├── auth_perm.py
│ │ │ ├── auth_post.py
│ │ │ ├── auth_role.py
│ │ │ ├── login.py
│ │ │ └── logs.py
│ │ │ └── user
│ │ │ ├── __init__.py
│ │ │ └── user.py
│ ├── app.py
│ ├── common
│ │ ├── enums.py
│ │ └── sms_captcha.py
│ ├── config.py
│ ├── dependencies
│ │ ├── __init__.py
│ │ ├── cache.py
│ │ ├── database.py
│ │ ├── log.py
│ │ └── verify.py
│ ├── exceptions
│ │ ├── __init__.py
│ │ ├── base.py
│ │ └── global_exc.py
│ ├── front
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── routers
│ │ │ ├── __init__.py
│ │ │ ├── article.py
│ │ │ ├── index.py
│ │ │ ├── login.py
│ │ │ ├── sms.py
│ │ │ ├── upload.py
│ │ │ └── user.py
│ │ ├── schemas
│ │ │ ├── article.py
│ │ │ ├── index.py
│ │ │ ├── login.py
│ │ │ ├── sms.py
│ │ │ └── user.py
│ │ └── service
│ │ │ ├── __init__.py
│ │ │ ├── article.py
│ │ │ ├── index.py
│ │ │ ├── login.py
│ │ │ ├── sms.py
│ │ │ └── user.py
│ ├── generator
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── constants.py
│ │ ├── routers
│ │ │ ├── __init__.py
│ │ │ └── gen.py
│ │ ├── schemas
│ │ │ ├── __init__.py
│ │ │ └── generate.py
│ │ ├── service
│ │ │ ├── __init__.py
│ │ │ └── generate.py
│ │ ├── templates
│ │ │ ├── py
│ │ │ │ ├── models.py.tpl
│ │ │ │ ├── routes.py.tpl
│ │ │ │ ├── schemas.py.tpl
│ │ │ │ └── service.py.tpl
│ │ │ └── vue
│ │ │ │ ├── api.ts.tpl
│ │ │ │ ├── edit.vue.tpl
│ │ │ │ ├── index-tree.vue.tpl
│ │ │ │ └── index.vue.tpl
│ │ ├── tpl_util.py
│ │ └── utils
│ │ │ ├── __init__.py
│ │ │ └── gen.py
│ ├── http_base.py
│ ├── middlewares.py
│ ├── models
│ │ ├── __init__.py
│ │ ├── article.py
│ │ ├── base.py
│ │ ├── common.py
│ │ ├── decorate.py
│ │ ├── gen.py
│ │ ├── notice.py
│ │ ├── reply.py
│ │ ├── setting.py
│ │ ├── system.py
│ │ └── user.py
│ ├── plugins
│ │ ├── __init__.py
│ │ ├── notice
│ │ │ ├── __init__.py
│ │ │ ├── engine
│ │ │ │ └── sms_notice.py
│ │ │ ├── notice_driver.py
│ │ │ └── template
│ │ │ │ └── sms_template.py
│ │ ├── sms
│ │ │ ├── __init__.py
│ │ │ ├── engine
│ │ │ │ ├── __init__.py
│ │ │ │ ├── aliyun_sms.py
│ │ │ │ ├── sms_base.py
│ │ │ │ └── tencent_sms.py
│ │ │ └── sms_driver.py
│ │ └── storage
│ │ │ ├── __init__.py
│ │ │ ├── engine
│ │ │ ├── __init__.py
│ │ │ ├── aliyun.py
│ │ │ ├── local.py
│ │ │ ├── qcloud.py
│ │ │ └── qiniu.py
│ │ │ └── storage_driver.py
│ ├── schema_base.py
│ ├── server_info.py
│ └── utils
│ │ ├── __init__.py
│ │ ├── array.py
│ │ ├── config.py
│ │ ├── datetime.py
│ │ ├── ip.py
│ │ ├── redis.py
│ │ ├── singleton_abstract_class_utils.py
│ │ ├── string.py
│ │ ├── tools.py
│ │ ├── urls.py
│ │ └── wechat.py
├── migrations
│ └── __init__.py
├── requirements.txt
├── run_admin.sh
├── run_front.sh
├── static
│ ├── ad01.jpg
│ ├── article01.png
│ ├── article02.jpeg
│ ├── article03.png
│ ├── backend_avatar.png
│ ├── backend_backdrop.png
│ ├── backend_favicon.ico
│ ├── backend_logo.png
│ ├── banner01.png
│ ├── banner02.png
│ ├── default_avatar.png
│ ├── nav01.png
│ ├── nav02.png
│ ├── nav03.png
│ ├── nav04.png
│ ├── nav05.png
│ ├── pc_favicon.ico
│ ├── pc_logo.png
│ ├── shop_logo.png
│ ├── tabbar_home.png
│ ├── tabbar_home_sel.png
│ ├── tabbar_me.png
│ ├── tabbar_me_sel.png
│ ├── tabbar_text.png
│ ├── tabbar_text_sel.png
│ ├── user_about.png
│ ├── user_collect.png
│ ├── user_kefu.png
│ └── user_setting.png
└── tests
│ └── __init__.py
├── sql
└── install.sql
└── uniapp
├── .env.development.example
├── .env.production.example
├── .eslintrc.js
├── .gitignore
├── .vscode
├── extensions.json
└── settings.json
├── index.html
├── package-lock.json
├── package.json
├── scripts
└── build.h5.mjs
├── src
├── App.vue
├── api
│ ├── account.ts
│ ├── app.ts
│ ├── news.ts
│ ├── shop.ts
│ └── user.ts
├── components
│ ├── app
│ │ └── app.vue
│ ├── news-card
│ │ └── news-card.vue
│ ├── tab
│ │ └── tab.vue
│ ├── tabbar
│ │ └── tabbar.vue
│ ├── tabs
│ │ └── tabs.vue
│ └── widgets
│ │ ├── banner
│ │ └── banner.vue
│ │ ├── customer-service
│ │ └── customer-service.vue
│ │ ├── my-service
│ │ └── my-service.vue
│ │ ├── nav
│ │ └── nav.vue
│ │ ├── search
│ │ └── search.vue
│ │ ├── user-banner
│ │ └── user-banner.vue
│ │ └── user-info
│ │ └── user-info.vue
├── enums
│ ├── agreementEnums.ts
│ ├── appEnums.ts
│ ├── cacheEnums.ts
│ └── requestEnums.ts
├── hooks
│ ├── useCopy.ts
│ ├── useLockFn.ts
│ └── useTouch.ts
├── main.ts
├── manifest.json
├── pages.json
├── pages
│ ├── agreement
│ │ └── agreement.vue
│ ├── as_us
│ │ └── as_us.vue
│ ├── bind_mobile
│ │ └── bind_mobile.vue
│ ├── change_password
│ │ └── change_password.vue
│ ├── collection
│ │ └── collection.vue
│ ├── customer_service
│ │ └── customer_service.vue
│ ├── empty
│ │ └── empty.vue
│ ├── forget_pwd
│ │ └── forget_pwd.vue
│ ├── index
│ │ └── index.vue
│ ├── login
│ │ └── login.vue
│ ├── news
│ │ ├── component
│ │ │ └── news-list.vue
│ │ └── news.vue
│ ├── news_detail
│ │ └── news_detail.vue
│ ├── register
│ │ └── register.vue
│ ├── search
│ │ ├── component
│ │ │ └── suggest.vue
│ │ └── search.vue
│ ├── user
│ │ └── user.vue
│ ├── user_data
│ │ └── user_data.vue
│ ├── user_set
│ │ └── user_set.vue
│ └── webview
│ │ └── webview.vue
├── plugins
│ ├── index.ts
│ └── modules
│ │ ├── pinia.ts
│ │ ├── uview.ts
│ │ └── vconsole.ts
├── router
│ ├── index.ts
│ └── routes.ts
├── static
│ └── images
│ │ ├── icon
│ │ ├── icon_code.png
│ │ ├── icon_mobile.png
│ │ ├── icon_password.png
│ │ ├── icon_user.png
│ │ ├── icon_visit.png
│ │ └── icon_wx.png
│ │ ├── tabs
│ │ ├── home.png
│ │ ├── home_s.png
│ │ ├── news.png
│ │ ├── news_s.png
│ │ ├── user.png
│ │ └── user_s.png
│ │ └── user
│ │ ├── default_avatar.png
│ │ └── my_topbg.png
├── stores
│ ├── app.ts
│ └── user.ts
├── styles
│ ├── index.scss
│ ├── public.scss
│ ├── tailwind.css
│ └── var.css
├── uni.scss
├── uni_modules
│ └── vk-uview-ui
│ │ ├── changelog.md
│ │ ├── components
│ │ ├── u-action-sheet
│ │ │ └── u-action-sheet.vue
│ │ ├── u-alert-tips
│ │ │ └── u-alert-tips.vue
│ │ ├── u-avatar-cropper
│ │ │ ├── u-avatar-cropper.vue
│ │ │ └── weCropper.js
│ │ ├── u-avatar
│ │ │ └── u-avatar.vue
│ │ ├── u-back-top
│ │ │ └── u-back-top.vue
│ │ ├── u-badge
│ │ │ └── u-badge.vue
│ │ ├── u-button
│ │ │ └── u-button.vue
│ │ ├── u-calendar
│ │ │ └── u-calendar.vue
│ │ ├── u-car-keyboard
│ │ │ └── u-car-keyboard.vue
│ │ ├── u-card
│ │ │ └── u-card.vue
│ │ ├── u-cell-group
│ │ │ └── u-cell-group.vue
│ │ ├── u-cell-item
│ │ │ └── u-cell-item.vue
│ │ ├── u-checkbox-group
│ │ │ └── u-checkbox-group.vue
│ │ ├── u-checkbox
│ │ │ └── u-checkbox.vue
│ │ ├── u-circle-progress
│ │ │ └── u-circle-progress.vue
│ │ ├── u-col
│ │ │ └── u-col.vue
│ │ ├── u-collapse-item
│ │ │ └── u-collapse-item.vue
│ │ ├── u-collapse
│ │ │ └── u-collapse.vue
│ │ ├── u-column-notice
│ │ │ └── u-column-notice.vue
│ │ ├── u-count-down
│ │ │ ├── u-count-down.vue
│ │ │ └── utils.js
│ │ ├── u-count-to
│ │ │ └── u-count-to.vue
│ │ ├── u-divider
│ │ │ └── u-divider.vue
│ │ ├── u-dropdown-item
│ │ │ └── u-dropdown-item.vue
│ │ ├── u-dropdown
│ │ │ └── u-dropdown.vue
│ │ ├── u-empty
│ │ │ └── u-empty.vue
│ │ ├── u-field
│ │ │ └── u-field.vue
│ │ ├── u-form-item
│ │ │ └── u-form-item.vue
│ │ ├── u-form
│ │ │ └── u-form.vue
│ │ ├── u-full-screen
│ │ │ └── u-full-screen.vue
│ │ ├── u-gap
│ │ │ └── u-gap.vue
│ │ ├── u-grid-item
│ │ │ └── u-grid-item.vue
│ │ ├── u-grid
│ │ │ └── u-grid.vue
│ │ ├── u-icon
│ │ │ └── u-icon.vue
│ │ ├── u-image
│ │ │ └── u-image.vue
│ │ ├── u-index-anchor
│ │ │ └── u-index-anchor.vue
│ │ ├── u-index-list
│ │ │ └── u-index-list.vue
│ │ ├── u-input
│ │ │ └── u-input.vue
│ │ ├── u-keyboard
│ │ │ └── u-keyboard.vue
│ │ ├── u-lazy-load
│ │ │ └── u-lazy-load.vue
│ │ ├── u-line-progress
│ │ │ └── u-line-progress.vue
│ │ ├── u-line
│ │ │ └── u-line.vue
│ │ ├── u-link
│ │ │ └── u-link.vue
│ │ ├── u-loading-page
│ │ │ └── u-loading-page.vue
│ │ ├── u-loading
│ │ │ └── u-loading.vue
│ │ ├── u-loadmore
│ │ │ └── u-loadmore.vue
│ │ ├── u-mask
│ │ │ └── u-mask.vue
│ │ ├── u-message-input
│ │ │ └── u-message-input.vue
│ │ ├── u-modal
│ │ │ └── u-modal.vue
│ │ ├── u-navbar
│ │ │ └── u-navbar.vue
│ │ ├── u-no-network
│ │ │ └── u-no-network.vue
│ │ ├── u-notice-bar
│ │ │ └── u-notice-bar.vue
│ │ ├── u-number-box
│ │ │ └── u-number-box.vue
│ │ ├── u-number-keyboard
│ │ │ └── u-number-keyboard.vue
│ │ ├── u-parse
│ │ │ ├── libs
│ │ │ │ ├── CssHandler.js
│ │ │ │ ├── MpHtmlParser.js
│ │ │ │ ├── config.js
│ │ │ │ └── trees.vue
│ │ │ └── u-parse.vue
│ │ ├── u-picker
│ │ │ └── u-picker.vue
│ │ ├── u-popup
│ │ │ └── u-popup.vue
│ │ ├── u-radio-group
│ │ │ └── u-radio-group.vue
│ │ ├── u-radio
│ │ │ └── u-radio.vue
│ │ ├── u-rate
│ │ │ └── u-rate.vue
│ │ ├── u-read-more
│ │ │ └── u-read-more.vue
│ │ ├── u-row-notice
│ │ │ └── u-row-notice.vue
│ │ ├── u-row
│ │ │ └── u-row.vue
│ │ ├── u-search
│ │ │ └── u-search.vue
│ │ ├── u-section
│ │ │ └── u-section.vue
│ │ ├── u-select
│ │ │ └── u-select.vue
│ │ ├── u-skeleton
│ │ │ └── u-skeleton.vue
│ │ ├── u-slider
│ │ │ └── u-slider.vue
│ │ ├── u-steps
│ │ │ └── u-steps.vue
│ │ ├── u-sticky
│ │ │ └── u-sticky.vue
│ │ ├── u-subsection
│ │ │ └── u-subsection.vue
│ │ ├── u-swipe-action
│ │ │ └── u-swipe-action.vue
│ │ ├── u-swiper
│ │ │ └── u-swiper.vue
│ │ ├── u-switch
│ │ │ └── u-switch.vue
│ │ ├── u-tabbar
│ │ │ └── u-tabbar.vue
│ │ ├── u-table
│ │ │ └── u-table.vue
│ │ ├── u-tabs-swiper
│ │ │ └── u-tabs-swiper.vue
│ │ ├── u-tabs
│ │ │ └── u-tabs.vue
│ │ ├── u-tag
│ │ │ └── u-tag.vue
│ │ ├── u-td
│ │ │ └── u-td.vue
│ │ ├── u-th
│ │ │ └── u-th.vue
│ │ ├── u-time-line-item
│ │ │ └── u-time-line-item.vue
│ │ ├── u-time-line
│ │ │ └── u-time-line.vue
│ │ ├── u-toast
│ │ │ └── u-toast.vue
│ │ ├── u-top-tips
│ │ │ └── u-top-tips.vue
│ │ ├── u-tr
│ │ │ └── u-tr.vue
│ │ ├── u-upload
│ │ │ └── u-upload.vue
│ │ ├── u-verification-code
│ │ │ └── u-verification-code.vue
│ │ ├── u-waterfall
│ │ │ └── u-waterfall.vue
│ │ └── vk-uview-ui
│ │ │ └── vk-uview-ui.vue
│ │ ├── iconfont.css
│ │ ├── index.js
│ │ ├── index.scss
│ │ ├── libs
│ │ ├── address
│ │ │ ├── areas.json
│ │ │ ├── citys.json
│ │ │ └── provinces.json
│ │ ├── config
│ │ │ ├── config.js
│ │ │ └── zIndex.js
│ │ ├── css
│ │ │ ├── color.scss
│ │ │ ├── common.scss
│ │ │ ├── style.components.scss
│ │ │ ├── style.h5.scss
│ │ │ ├── style.mp.scss
│ │ │ ├── style.nvue.scss
│ │ │ └── style.vue.scss
│ │ ├── function
│ │ │ ├── $parent.js
│ │ │ ├── addUnit.js
│ │ │ ├── bem.js
│ │ │ ├── color.js
│ │ │ ├── colorGradient.js
│ │ │ ├── debounce.js
│ │ │ ├── deepClone.js
│ │ │ ├── deepMerge.js
│ │ │ ├── getParent.js
│ │ │ ├── guid.js
│ │ │ ├── md5.js
│ │ │ ├── queryParams.js
│ │ │ ├── random.js
│ │ │ ├── randomArray.js
│ │ │ ├── route.js
│ │ │ ├── sys.js
│ │ │ ├── test.js
│ │ │ ├── throttle.js
│ │ │ ├── timeFormat.js
│ │ │ ├── timeFrom.js
│ │ │ ├── toast.js
│ │ │ ├── trim.js
│ │ │ └── type2icon.js
│ │ ├── mixin
│ │ │ ├── mixin.js
│ │ │ └── mpShare.js
│ │ ├── request
│ │ │ └── index.js
│ │ ├── store
│ │ │ └── index.js
│ │ └── util
│ │ │ ├── async-validator.js
│ │ │ └── emitter.js
│ │ ├── package.json
│ │ ├── readme.md
│ │ └── theme.scss
└── utils
│ ├── auth.ts
│ ├── cache.ts
│ ├── client.ts
│ ├── env.ts
│ ├── file.ts
│ ├── request
│ ├── cancel.ts
│ ├── http.ts
│ ├── index.ts
│ └── type.d.ts
│ ├── util.ts
│ └── wechat.ts
├── tailwind.config.js
├── tsconfig.json
├── typings
├── env.d.ts
└── uni.d.ts
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | .fleet
2 | .idea
3 | env.production
4 |
--------------------------------------------------------------------------------
/admin/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | # unplugin-auto-import
18 | auto-imports.d.ts
19 | components.d.ts
20 | .eslintrc-auto-import.json
21 |
22 | /cypress/videos/
23 | /cypress/screenshots/
24 |
25 | # Editor directories and files
26 | .idea
27 | *.suo
28 | *.ntvs*
29 | *.njsproj
30 | *.sln
31 | *.sw?
32 |
33 | # .env
34 | .env.development
35 | .env.production
36 |
--------------------------------------------------------------------------------
/admin/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/admin/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.detectIndentation": false,
3 | "editor.tabSize": 4,
4 | "editor.formatOnSave": true,
5 | "editor.codeActionsOnSave": {
6 | "source.fixAll.eslint": true
7 | },
8 | "css.validate": false,
9 | "less.validate": false,
10 | "scss.validate": false
11 | }
12 |
--------------------------------------------------------------------------------
/admin/global.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/admin/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {}
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/admin/src/api/app.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 配置
4 | export function getConfig() {
5 | return request.get({ url: '/common/index/config' })
6 | }
7 |
8 | // 工作台主页
9 | export function getWorkbench() {
10 | return request.get({ url: '/common/index/console' })
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/api/channel/h5.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // H5渠道配置保存
4 | export function setH5Config(params: any) {
5 | return request.post({ url: '/channel/h5/save', params })
6 | }
7 |
8 | // H5渠道配置详情
9 | export function getH5Config() {
10 | return request.get({ url: '/channel/h5/detail' })
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/api/channel/weapp.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 微信小程序配置保存
4 | export function setWeappConfig(params: any) {
5 | return request.post({ url: '/channel/mp/save', params })
6 | }
7 |
8 | // 微信小程序配置详情
9 | export function getWeappConfig() {
10 | return request.get({ url: '/channel/mp/detail' })
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/api/channel/wx_dev.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 微信开发平台配置保存
4 | export function setWxDevConfig(params: any) {
5 | return request.post({ url: '/channel/wx/save', params })
6 | }
7 |
8 | // 微信开发平台配置详情
9 | export function getWxDevConfig() {
10 | return request.get({ url: '/channel/wx/detail' })
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/api/consumer.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 用户列表
4 | export function getUserList(params: any) {
5 | return request.get({ url: '/user/list', params })
6 | }
7 |
8 | // 用户详情
9 | export function getUserDetail(params: any) {
10 | return request.get({ url: '/user/detail', params })
11 | }
12 |
13 | // 用户编辑
14 | export function userEdit(params: any) {
15 | return request.post({ url: '/user/edit', params })
16 | }
17 |
--------------------------------------------------------------------------------
/admin/src/api/org/department.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 部门列表
4 | export function deptLists(params?: any) {
5 | return request.get({ url: '/system/dept/list', params })
6 | }
7 |
8 | // 添加部门
9 | export function deptAdd(params: any) {
10 | return request.post({ url: '/system/dept/add', params })
11 | }
12 |
13 | // 编辑部门
14 | export function deptEdit(params: any) {
15 | return request.post({ url: '/system/dept/edit', params })
16 | }
17 |
18 | // 删除部门
19 | export function deptDelete(params: any) {
20 | return request.post({ url: '/system/dept/del', params })
21 | }
22 |
23 | // 部门详情
24 | export function deptDetail(params?: any) {
25 | return request.get({ url: '/system/dept/detail', params })
26 | }
27 |
--------------------------------------------------------------------------------
/admin/src/api/setting/search.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | /**
4 | * @return { Promise }
5 | * @description 获取热门搜索数据
6 | */
7 | export function getSearch() {
8 | return request.get({ url: '/setting/search/detail' })
9 | }
10 |
11 | export interface List {
12 | name: string // 搜索关键字
13 | sort: number // 热门搜索排序
14 | }
15 |
16 | export interface Search {
17 | isHotSearch: number // 是否开启搜索0/1
18 | list: List[]
19 | }
20 | /**
21 | * @return { Promise }
22 | * @param { Search } Search
23 | * @description 设置热门搜索
24 | */
25 | export function setSearch(params: Search) {
26 | return request.post({ url: '/setting/search/save', params })
27 | }
28 |
--------------------------------------------------------------------------------
/admin/src/api/setting/storage.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取存储引擎列表
4 | export function storageLists() {
5 | return request.get({ url: '/setting/storage/list' })
6 | }
7 |
8 | // 设置存储引擎信息
9 | export function storageChange(params: any) {
10 | return request.post({ url: '/setting/storage/change', params })
11 | }
12 |
13 | // 设置存储引擎信息
14 | export function storageSetup(params: any) {
15 | return request.post({ url: '/setting/storage/edit', params })
16 | }
17 |
18 | // 获取存储配置信息
19 | export function storageDetail(params: any) {
20 | return request.get({ url: '/setting/storage/detail', params })
21 | }
22 |
--------------------------------------------------------------------------------
/admin/src/api/setting/system.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取系统环境
4 | export function systemInfo() {
5 | return request.get({ url: '/monitor/server' })
6 | }
7 |
8 | // 获取系统日志列表
9 | export function systemLogLists(params: any) {
10 | return request.get({ url: '/system/log/operate', params })
11 | }
12 |
13 | // 系统缓存监控
14 | export function systemCache() {
15 | return request.get({ url: '/monitor/cache' })
16 | }
17 |
--------------------------------------------------------------------------------
/admin/src/api/user.ts:
--------------------------------------------------------------------------------
1 | import config from '@/config'
2 | import request from '@/utils/request'
3 |
4 | // 登录
5 | export function login(params: Record) {
6 | return request.post({ url: '/system/login', params: { ...params, terminal: config.terminal } })
7 | }
8 |
9 | // 退出登录
10 | export function logout() {
11 | return request.post({ url: '/system/logout' })
12 | }
13 |
14 | // 用户信息
15 | export function getUserInfo() {
16 | return request.get({ url: '/system/admin/self' })
17 | }
18 |
19 | // 菜单路由
20 | export function getMenu() {
21 | return request.get({ url: '/system/menu/route' })
22 | }
23 |
24 | // 编辑管理员信息
25 | export function setUserInfo(params: any) {
26 | return request.post({ url: '/system/admin/upInfo', params })
27 | }
28 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/Androidfanhui.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/banxing_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/carryout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/danxuankuang.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/dingdan_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/dingwei_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/fullscreen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/gengduo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/gengduoandroid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/gou.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/guanbi.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/haibaosheji.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/iOSfanhui.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jia_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jian_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jianshao.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jingshi_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jingshi_mian1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jingyinggonglve.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/jinhuo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/kejian_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/list-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/qingchu_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/set_pay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/set_weihu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shezhi_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shijian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shijian_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shouqi.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shouqi_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shouye_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shuju.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/shuju_liuliang.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/tianjia.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/tishi_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/wode_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/yingxiao_qipao.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/youjiantou.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/zhankai.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/icons/zhankai_mian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin/src/assets/images/icon_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/assets/images/icon_folder.png
--------------------------------------------------------------------------------
/admin/src/assets/images/no_perms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/assets/images/no_perms.png
--------------------------------------------------------------------------------
/admin/src/assets/images/theme_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/assets/images/theme_black.png
--------------------------------------------------------------------------------
/admin/src/assets/images/theme_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/assets/images/theme_white.png
--------------------------------------------------------------------------------
/admin/src/components/footer-btns/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
17 |
18 |
31 |
--------------------------------------------------------------------------------
/admin/src/components/icon/index.ts:
--------------------------------------------------------------------------------
1 | import * as ElementPlusIcons from '@element-plus/icons-vue'
2 | //@ts-ignore
3 | import localIconsName from 'virtual:svg-icons-names'
4 |
5 | export const LOCAL_ICON_PREFIX = 'local-icon-'
6 | export const EL_ICON_PREFIX = 'el-icon-'
7 |
8 | const elIconsName: string[] = []
9 |
10 | for (const [, component] of Object.entries(ElementPlusIcons)) {
11 | elIconsName.push(`${EL_ICON_PREFIX}${component.name}`)
12 | }
13 |
14 | export function getElementPlusIconNames() {
15 | return elIconsName
16 | }
17 | export function getLocalIconNames() {
18 | return localIconsName
19 | }
20 |
--------------------------------------------------------------------------------
/admin/src/components/link/index.ts:
--------------------------------------------------------------------------------
1 | export enum LinkTypeEnum {
2 | 'SHOP_PAGES' = 'shop',
3 | 'CUSTOM_LINK' = 'custom'
4 | }
5 |
6 | export interface Link {
7 | path: string
8 | name?: string
9 | type: string
10 | query?: Record
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/config/index.ts:
--------------------------------------------------------------------------------
1 | const config = {
2 | terminal: 1, //终端
3 | title: '后台管理系统', //网站默认标题
4 | version: '1.3.3', //版本号
5 | baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
6 | urlPrefix: 'api', //请求默认前缀
7 | timeout: 10 * 1000 //请求超时时长
8 | }
9 |
10 | export default config
11 |
--------------------------------------------------------------------------------
/admin/src/config/setting.ts:
--------------------------------------------------------------------------------
1 | const defaultSetting = {
2 | showCrumb: true, // 是否显示面包屑
3 | showLogo: true, // 是否显示logo
4 | isUniqueOpened: false, //只展开一个一级菜单
5 | sideWidth: 200, //侧边栏宽度
6 | sideTheme: 'light', //侧边栏主题
7 | sideDarkColor: '#1d2124', //侧边栏深色主题颜色
8 | openMultipleTabs: true, // 是否开启多标签tab栏
9 | theme: '#4A5DFF', //主题色
10 | successTheme: '#67c23a', //成功主题色
11 | warningTheme: '#e6a23c', //警告主题色
12 | dangerTheme: '#f56c6c', //危险主题色
13 | errorTheme: '#f56c6c', //错误主题色
14 | infoTheme: '#909399' //信息主题色
15 | }
16 | //以上各种主题色分别对应element-plus的几种行为主题
17 |
18 | export default defaultSetting
19 |
--------------------------------------------------------------------------------
/admin/src/enums/cacheEnums.ts:
--------------------------------------------------------------------------------
1 | // 本地缓冲key
2 |
3 | //token
4 | export const TOKEN_KEY = 'token'
5 | //账号
6 | export const ACCOUNT_KEY = 'account'
7 | //设置
8 | export const SETTING_KEY = 'setting'
9 |
--------------------------------------------------------------------------------
/admin/src/enums/pageEnum.ts:
--------------------------------------------------------------------------------
1 | export enum PageEnum {
2 | //登录页面
3 | LOGIN = '/login',
4 | //无权限页面
5 | ERROR_403 = '/403',
6 | // 404
7 | ERROR_404 = '/:pathMatch(.*)*',
8 | INDEX = '/'
9 | }
10 |
--------------------------------------------------------------------------------
/admin/src/hooks/useLockFn.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export function useLockFn(fn: (...args: any[]) => Promise) {
4 | const isLock = ref(false)
5 | const lockFn = async (...args: any[]) => {
6 | if (isLock.value) return
7 | isLock.value = true
8 | try {
9 | const res = await fn(...args)
10 | isLock.value = false
11 | return res
12 | } catch (e) {
13 | isLock.value = false
14 | throw e
15 | }
16 | }
17 | return {
18 | isLock,
19 | lockFn
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/admin/src/hooks/useWatchRoute.ts:
--------------------------------------------------------------------------------
1 | import type { RouteLocationNormalizedLoaded } from 'vue-router'
2 |
3 | export function useWatchRoute(callback: (route: RouteLocationNormalizedLoaded) => void) {
4 | const route = useRoute()
5 | watch(
6 | route,
7 | () => {
8 | callback(route)
9 | },
10 | {
11 | immediate: true
12 | }
13 | )
14 | return {
15 | route
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/admin/src/install/plugins/element.ts:
--------------------------------------------------------------------------------
1 | import * as ElementPlusIcons from '@element-plus/icons-vue'
2 | import type { App } from 'vue'
3 | //https://github.com/element-plus/element-plus/issues/7293
4 | import 'element-plus/es/components/dialog/style/css'
5 |
6 | export default (app: App) => {
7 | // 全局注册ElementPlus图标
8 | for (const [key, component] of Object.entries(ElementPlusIcons)) {
9 | app.component(key, component)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/admin/src/install/plugins/hljs.ts:
--------------------------------------------------------------------------------
1 | import type { App } from 'vue'
2 | import 'highlight.js/styles/github.css'
3 | import hljs from 'highlight.js/lib/common'
4 | import hljsVuePlugin from '@highlightjs/vue-plugin'
5 | console.log(hljs)
6 | export default (app: App) => {
7 | app.use(hljsVuePlugin)
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/install/plugins/pinia.ts:
--------------------------------------------------------------------------------
1 | import store from '@/stores'
2 | import type { App } from 'vue'
3 |
4 | export default (app: App) => {
5 | app.use(store)
6 | }
7 |
--------------------------------------------------------------------------------
/admin/src/install/plugins/router.ts:
--------------------------------------------------------------------------------
1 | import router from '@/router'
2 | import type { App } from 'vue'
3 |
4 | export default (app: App) => {
5 | app.use(router)
6 | }
7 |
--------------------------------------------------------------------------------
/admin/src/layout/components/footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
23 |
--------------------------------------------------------------------------------
/admin/src/layout/default/components/header/fold.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/admin/src/layout/default/components/header/full-screen.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/admin/src/layout/default/components/header/refresh.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/admin/src/layout/default/components/setting/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
20 |
--------------------------------------------------------------------------------
/admin/src/layout/default/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
23 |
--------------------------------------------------------------------------------
/admin/src/likeadmin_python.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": "../.."
5 | },
6 | {
7 | "path": "../../../../study"
8 | }
9 | ],
10 | "settings": {}
11 | }
--------------------------------------------------------------------------------
/admin/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import install from './install'
4 | import './permission'
5 | import './styles/index.scss'
6 | import 'virtual:svg-icons-register'
7 |
8 | const app = createApp(App)
9 | app.use(install)
10 | app.mount('#app')
11 |
--------------------------------------------------------------------------------
/admin/src/stores/index.ts:
--------------------------------------------------------------------------------
1 | import { createPinia } from 'pinia'
2 | const store = createPinia()
3 | export default store
4 |
--------------------------------------------------------------------------------
/admin/src/styles/index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'element.scss';
3 | @import 'dark.css';
4 | @import 'var.css';
5 | @import 'tailwind.css';
6 | @import 'public.scss';
7 |
--------------------------------------------------------------------------------
/admin/src/styles/public.scss:
--------------------------------------------------------------------------------
1 | body {
2 | @apply text-base text-tx-primary overflow-hidden min-w-[375px];
3 | }
4 | .form-tips {
5 | @apply text-tx-secondary text-xs leading-6 mt-1;
6 | }
7 |
8 | .clearfix:after {
9 | content: '';
10 | display: block;
11 | clear: both;
12 | visibility: hidden;
13 | }
14 |
15 | /* NProgress */
16 | #nprogress .bar {
17 | @apply bg-primary #{!important};
18 | }
19 |
--------------------------------------------------------------------------------
/admin/src/styles/tailwind.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
--------------------------------------------------------------------------------
/admin/src/utils/auth.ts:
--------------------------------------------------------------------------------
1 | import { TOKEN_KEY } from '@/enums/cacheEnums'
2 | import { resetRouter } from '@/router'
3 | import useTabsStore from '@/stores/modules/multipleTabs'
4 | import useUserStore from '@/stores/modules/user'
5 | import cache from './cache'
6 |
7 | export function getToken() {
8 | return cache.get(TOKEN_KEY)
9 | }
10 |
11 | export function clearAuthInfo() {
12 | const userStore = useUserStore()
13 | const tabsStore = useTabsStore()
14 | userStore.resetState()
15 | tabsStore.$reset()
16 | cache.remove(TOKEN_KEY)
17 | resetRouter()
18 | }
19 |
--------------------------------------------------------------------------------
/admin/src/utils/env.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @description: 开发模式
3 | */
4 | export function isDevMode(): boolean {
5 | return import.meta.env.DEV
6 | }
7 |
8 | /**
9 | * @description: 生成模式
10 | */
11 | export function isProdMode(): boolean {
12 | return import.meta.env.PROD
13 | }
14 |
--------------------------------------------------------------------------------
/admin/src/utils/file.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @description
3 | * @param file
4 | */
5 | export function streamFileDownload(file: any, fileName = '文件名称.zip') {
6 | const blob = new Blob([file], { type: 'application/octet-stream;charset=UTF-8' })
7 | const url = window.URL.createObjectURL(blob)
8 | const link = document.createElement('a')
9 | link.style.display = 'none'
10 | link.href = url
11 | link.setAttribute('download', fileName)
12 | document.body.appendChild(link)
13 | link.click()
14 | document.body.removeChild(link) // 下载完成移除元素
15 | window.URL.revokeObjectURL(url)
16 | }
17 |
--------------------------------------------------------------------------------
/admin/src/utils/validate.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @param {string} path
3 | * @returns {Boolean}
4 | */
5 | export function isExternal(path: string) {
6 | return /^(https?:|mailto:|tel:)/.test(path)
7 | }
8 |
--------------------------------------------------------------------------------
/admin/src/views/account/images/login_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/account/images/login_bg.png
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/banner/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/banner/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '首页轮播图',
3 | name: 'banner',
4 | content: {
5 | enabled: 1,
6 | data: [
7 | {
8 | image: '',
9 | name: '',
10 | link: {}
11 | }
12 | ]
13 | },
14 | styles: {}
15 | })
16 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/customer-service/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/customer-service/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '客服设置',
3 | name: 'customer-service',
4 | content: {
5 | title: '添加客服二维码',
6 | time: '',
7 | mobile: '',
8 | qrcode: ''
9 | },
10 | styles: {}
11 | })
12 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/index.ts:
--------------------------------------------------------------------------------
1 | const widgets: Record = import.meta.glob('./**/index.ts', { eager: true })
2 | interface Widget {
3 | attr: any
4 | content: any
5 | options: any
6 | }
7 | console.log(widgets)
8 | const exportWidgets: Record = {}
9 | Object.keys(widgets).forEach((key) => {
10 | const widgetName = key.replace(/^\.\/([\w-]+).*/gi, '$1')
11 | exportWidgets[widgetName] = widgets[key]?.default
12 | })
13 |
14 | export default exportWidgets
15 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/my-service/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/my-service/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '我的服务',
3 | name: 'my-service',
4 | content: {
5 | style: 1,
6 | title: '我的服务',
7 | data: [
8 | {
9 | image: '',
10 | name: '导航名称',
11 | link: {}
12 | }
13 | ]
14 | },
15 | styles: {}
16 | })
17 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/nav/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/nav/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '导航菜单',
3 | name: 'nav',
4 | content: {
5 | enabled: 1,
6 | data: [
7 | {
8 | image: '',
9 | name: '导航名称',
10 | link: {}
11 | }
12 | ]
13 | },
14 | styles: {}
15 | })
16 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/news/attr.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/news/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/news/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '资讯',
3 | name: 'news',
4 | disabled: 1,
5 | content: {},
6 | styles: {}
7 | })
8 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/search/attr.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/search/content.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 请输入关键词搜索
6 |
7 |
8 |
9 |
10 |
11 |
24 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/search/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/search/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '搜索',
3 | name: 'search',
4 | disabled: 1,
5 | content: {},
6 | styles: {}
7 | })
8 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-banner/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-banner/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '个人中心广告图',
3 | name: 'user-banner',
4 | content: {
5 | enabled: 1,
6 | data: [
7 | {
8 | image: '',
9 | name: '',
10 | link: {}
11 | }
12 | ]
13 | },
14 | styles: {}
15 | })
16 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/attr.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/content.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
未登录
5 |
6 |
7 |
8 |
9 |
17 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/images/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/decoration/component/widgets/user-info/images/default_avatar.png
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/images/my_topbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/decoration/component/widgets/user-info/images/my_topbg.png
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/index.ts:
--------------------------------------------------------------------------------
1 | import attr from './attr.vue'
2 | import content from './content.vue'
3 | import options from './options'
4 | export default {
5 | attr,
6 | content,
7 | options
8 | }
9 |
--------------------------------------------------------------------------------
/admin/src/views/decoration/component/widgets/user-info/options.ts:
--------------------------------------------------------------------------------
1 | export default () => ({
2 | title: '用户信息',
3 | name: 'user-info',
4 | disabled: 1,
5 | content: {},
6 | styles: {}
7 | })
8 |
--------------------------------------------------------------------------------
/admin/src/views/error/403.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |

7 |
8 |
9 |
10 |
11 |
12 |
13 |
16 |
--------------------------------------------------------------------------------
/admin/src/views/error/404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/BrowserPreview_tmp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/BrowserPreview_tmp.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_admin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_admin.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_auth.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_dept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_dept.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_dict.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_dict.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_file.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_generator.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_role.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_role.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/menu_web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/menu_web.png
--------------------------------------------------------------------------------
/admin/src/views/workbench/image/qq_group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/admin/src/views/workbench/image/qq_group.png
--------------------------------------------------------------------------------
/admin/tsconfig.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.node.json",
3 | "include": ["vite.config.*"],
4 | "compilerOptions": {
5 | "composite": true,
6 | "types": ["node"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/admin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.web.json",
3 | "include": [
4 | "global.d.ts",
5 | "src/**/*",
6 | "src/**/*.vue",
7 | "components.d.ts",
8 | "auto-imports.d.ts",
9 | "typings/**/*.d.ts"
10 | ],
11 | "compilerOptions": {
12 | "isolatedModules": true,
13 | "baseUrl": ".",
14 | "paths": {
15 | "@/*": ["./src/*"]
16 | }
17 | },
18 | "references": [
19 | {
20 | "path": "./tsconfig.config.json"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/admin/typings/index.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'vue3-video-play'
2 |
3 | declare module 'css-color-function'
4 |
5 | type PromiseFun = (...arg: any[]) => Promise
6 |
--------------------------------------------------------------------------------
/admin/typings/router.d.ts:
--------------------------------------------------------------------------------
1 | import 'vue-router'
2 | declare module 'vue-router' {
3 | // 扩展 RouteMeta
4 | interface RouteMeta {
5 | type?: string
6 | perms?: string
7 | title?: string
8 | icon?: string
9 | hidden?: boolean
10 | activeMenu?: string
11 | hideTab?: boolean
12 | keepAlive?: boolean
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/docker/.gitignore:
--------------------------------------------------------------------------------
1 | /data
2 | /log
--------------------------------------------------------------------------------
/frontend/assets/@floating-ui.dd8b295f.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/frontend/assets/BrowserPreview_tmp.f88b03df.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/BrowserPreview_tmp.f88b03df.png
--------------------------------------------------------------------------------
/frontend/assets/attr-setting.vue_vue_type_script_setup_true_lang.79deee70.js:
--------------------------------------------------------------------------------
1 | import{w as i}from"./index.310dbf76.js";import{d as l,o as t,c as d,a as m,V as f,O as c,S as p,u as g,aI as b}from"./@vue.a137a740.js";const u={class:"pages-setting"},w={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},k=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})}},setup(e){return(y,x)=>{var s,a,n,o,r;return t(),d("div",u,[m("div",w,f((s=e.widget)==null?void 0:s.title),1),(t(),c(b,null,[(t(),c(p((n=g(i)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(r=e.widget)==null?void 0:r.styles},null,8,["content","styles"]))],1024))])}}});export{k as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.15bf174a.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.d3150e80.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.9653ec08.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.9653ec08.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.db9092b2.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.9820b9a5.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.9820b9a5.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.vue_vue_type_script_setup_true_lang.9653ec08.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.vue_vue_type_script_setup_true_lang.9820b9a5.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/balanced-match.d2a36341.js:
--------------------------------------------------------------------------------
1 | var l=function(r,a,e){for(var s=0,t={},n=0;n1?e.substring(t.start+r.length,t.end):"",t.post=e.slice(t.end+a.length),t};export{l as b};
2 |
--------------------------------------------------------------------------------
/frontend/assets/cache.b08e0053.css:
--------------------------------------------------------------------------------
1 | .el-table .el-table__cell[data-v-4f669e5f]{min-width:120px}
2 |
--------------------------------------------------------------------------------
/frontend/assets/consumer.e63bb0ad.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function u(r){return t.get({url:"/user/list",params:r})}function s(r){return t.get({url:"/user/detail",params:r})}function i(r){return t.post({url:"/user/edit",params:r})}export{u as a,s as g,i as u};
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.75595e09.css:
--------------------------------------------------------------------------------
1 | .search[data-v-6fb29c10]{background-color:#fff;padding:7px 12px}.search .search-con[data-v-6fb29c10]{height:100%;height:36px;border-radius:36px;background:#f4f4f4;color:#999}
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.9f244b19.css:
--------------------------------------------------------------------------------
1 | .customer-service[data-v-74f49970]{margin:10px 18px;border-radius:10px;padding:50px 55px 80px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.c40e4b89.css:
--------------------------------------------------------------------------------
1 | .news .news-title[data-v-6445a67e]:before{content:"";width:4px;height:17px;display:block;margin-right:5px;background:#4173ff}
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.c9a2d497.css:
--------------------------------------------------------------------------------
1 | .user-info[data-v-cdcc3d15]{background:url(/assets/my_topbg.137a6c56.png);height:115px;background-position:bottom;background-size:100% auto}
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.efb8af20.css:
--------------------------------------------------------------------------------
1 | .my-service[data-v-a7e52d47]{margin:10px 10px 0;background-color:#fff;border-radius:7px}.my-service .title[data-v-a7e52d47]{border-bottom:1px solid #e5e5e5;font-size:16px;font-weight:500}
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.vue_vue_type_script_setup_true_lang.12563a6c.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as s,e as c,o as r,c as i,a as p,X as m,u as d}from"./@vue.a137a740.js";const u={class:"banner mx-[10px] mt-[10px]"},_={class:"banner-image"},h=s({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const n=t,a=c(()=>{const{data:e}=n.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,l)=>(r(),i("div",u,[p("div",_,[m(o,{width:"100%",height:"100px",src:d(a),fit:"contain"},null,8,["src"])])]))}});export{h as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.vue_vue_type_script_setup_true_lang.43e08694.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as r,o as e,c as t,a,W as l,a8 as p,X as i,V as d}from"./@vue.a137a740.js";const m={class:"nav bg-white pt-[15px] pb-[8px]"},_={class:"flex flex-wrap"},x={class:"mt-[7px]"},b=r({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){return(f,u)=>(e(),t("div",m,[a("div",_,[(e(!0),t(l,null,p(n.content.data,(s,c)=>(e(),t("div",{key:c,class:"flex flex-col items-center w-1/5 mb-[15px]"},[i(o,{width:"41px",height:"41px",src:s.image,alt:""},null,8,["src"]),a("div",x,d(s.name),1)]))),128))])]))}});export{b as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/content.vue_vue_type_script_setup_true_lang.c47a6b69.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as s,e as c,o as r,c as i,a as p,X as d,u as m}from"./@vue.a137a740.js";const u={class:"banner"},_={class:"banner-image"},h=s({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const n=t,a=c(()=>{const{data:e}=n.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,l)=>(r(),i("div",u,[p("div",_,[d(o,{width:"100%",height:"170px",src:m(a),fit:"contain"},null,8,["src"])])]))}});export{h as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/decoration-img.a64d82f7.css:
--------------------------------------------------------------------------------
1 | .el-image[data-v-73b9b608]{display:block}.el-image .image-slot[data-v-73b9b608]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#fafafa;color:#909399}
2 |
--------------------------------------------------------------------------------
/frontend/assets/decoration.ab9ddaa9.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function a(e){return t.get({url:"/decorate/pages/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate/pages/save",params:e})}function c(e){return t.get({url:"/decorate/data/article",params:e})}function n(e){return t.get({url:"/decorate/tabbar/detail",params:e})}function s(e){return t.post({url:"/decorate/tabbar/save",params:e})}export{a,n as b,s as c,c as g,o as s};
2 |
--------------------------------------------------------------------------------
/frontend/assets/default_avatar.fa19527b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/default_avatar.fa19527b.png
--------------------------------------------------------------------------------
/frontend/assets/department.a2353fbd.js:
--------------------------------------------------------------------------------
1 | import{r as e}from"./index.b60a26c4.js";function r(t){return e.get({url:"/system/dept/list",params:t})}function d(t){return e.post({url:"/system/dept/add",params:t})}function u(t){return e.post({url:"/system/dept/edit",params:t})}function n(t){return e.post({url:"/system/dept/del",params:t})}function p(t){return e.get({url:"/system/dept/detail",params:t})}export{u as a,d as b,p as c,r as d,n as e};
2 |
--------------------------------------------------------------------------------
/frontend/assets/dict.7219bd74.js:
--------------------------------------------------------------------------------
1 | import{r as e}from"./index.b60a26c4.js";function n(t){return e.get({url:"/setting/dict/type/list",params:t})}function d(t){return e.get({url:"/setting/dict/type/all",params:t})}function r(t){return e.post({url:"/setting/dict/type/add",params:t})}function s(t){return e.post({url:"/setting/dict/type/edit",params:t})}function a(t){return e.post({url:"/setting/dict/type/del",params:t})}function c(t){return e.get({url:"/setting/dict/data/list",params:t},{ignoreCancelToken:!0})}function u(t){return e.post({url:"/setting/dict/data/add",params:t})}function l(t){return e.post({url:"/setting/dict/data/edit",params:t})}function o(t){return e.post({url:"/setting/dict/data/del",params:t})}export{l as a,u as b,o as c,d,c as e,s as f,r as g,a as h,n as i};
2 |
--------------------------------------------------------------------------------
/frontend/assets/error.be93caf8.css:
--------------------------------------------------------------------------------
1 | .error[data-v-a47523cc]{text-align:center;height:100vh;display:flex;justify-content:center;align-items:center}.error .error-code[data-v-a47523cc]{color:var(--el-color-primary);font-size:150px}.error .el-button[data-v-a47523cc]{width:176px}
2 |
--------------------------------------------------------------------------------
/frontend/assets/escape-html.e5dfadb9.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * escape-html
3 | * Copyright(c) 2012-2013 TJ Holowaychuk
4 | * Copyright(c) 2015 Andreas Lubbe
5 | * Copyright(c) 2015 Tiancheng "Timothy" Gu
6 | * MIT Licensed
7 | */var i=/["'&<>]/,u=l;function l(n){var a=""+n,c=i.exec(a);if(!c)return a;var r,s="",e=0,t=0;for(e=c.index;e(s(),n("div",c,[_("div",{class:"footer-btns__content",style:d(e.fixed?"position: fixed":"")},[a(o.$slots,"default",{},void 0,!0)],4)]))}});const u=r(i,[["__scopeId","data-v-0b44b424"]]);export{u as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.0d25a475.css:
--------------------------------------------------------------------------------
1 | .w-e-full-screen-container{z-index:999}.w-e-text-container [data-slate-editor] ul{list-style:disc}.w-e-text-container [data-slate-editor] ol{list-style:decimal}h1{font-size:2em}h2{font-size:1.5em}h3{font-size:1.17em}h4{font-size:1em}h5{font-size:.83em}h1,h2,h3,h4,h5{font-weight:700}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.15f50578.css:
--------------------------------------------------------------------------------
1 | .decoration-pages[data-v-a4bc0153]{min-height:calc(100vh - var(--navbar-height) - 80px);display:flex;flex-direction:column}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.2a55a6b3.css:
--------------------------------------------------------------------------------
1 | .hot-search .hot-search-phone[data-v-2eb25184]{width:300px}.hot-search .hot-search-phone-content[data-v-2eb25184]{width:100%;height:530px;padding:12px;border-radius:10px;border:1px solid #e6e6e6}.hot-search .hot-search-phone-content .search-com .search-con[data-v-2eb25184]{height:100%;height:36px;border-radius:36px;background:#f4f4f4;color:#999}.hot-search .hot-search-phone-content .hot-search-title[data-v-2eb25184]{padding:10px 0;font-size:13px}.hot-search .hot-search-phone-content .hot-search-text span[data-v-2eb25184]{font-size:12px;border-radius:100px;padding:5px 10px;margin:0 6px 6px 0;display:inline-block;background-color:#f4f4f4}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.2ace3fcf.css:
--------------------------------------------------------------------------------
1 | .footer-btns[data-v-0b44b424]{height:60px}.footer-btns__content[data-v-0b44b424]{bottom:0;height:60px;right:0;left:0;z-index:99;display:flex;align-items:center;justify-content:center;background-color:var(--el-bg-color);--tw-shadow: var(--el-box-shadow);--tw-shadow-colored: var(--el-box-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.796a76b8.js:
--------------------------------------------------------------------------------
1 | import{d,b as r}from"./index.b60a26c4.js";import{d as c,o as s,c as n,K as p,$ as _,X as i,T as m}from"./@vue.a137a740.js";const u=c({props:{showClose:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:o}){return{handleClose:()=>{o("close")}}}});const f={class:"del-wrap"};function C(e,o,t,h,$,v){const a=r;return s(),n("div",f,[p(e.$slots,"default",{},void 0,!0),e.showClose?(s(),n("div",{key:0,class:"icon-close",onClick:o[0]||(o[0]=_((...l)=>e.handleClose&&e.handleClose(...l),["stop"]))},[i(a,{size:12,name:"el-icon-CloseBold"})])):m("",!0)])}const y=d(u,[["render",C],["__scopeId","data-v-2a98aa67"]]);export{y as _};
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.9bce7fe7.css:
--------------------------------------------------------------------------------
1 | .del-wrap[data-v-2a98aa67]{position:relative}.del-wrap:hover>.icon-close[data-v-2a98aa67]{display:flex}.del-wrap .icon-close[data-v-2a98aa67]{display:none;position:absolute;top:-8px;right:-8px;width:16px;height:16px;background-color:#0000004d;justify-content:center;align-items:center;border-radius:50%;color:#fff;cursor:pointer}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.a318de61.css:
--------------------------------------------------------------------------------
1 | .dialog-body[data-v-b8e715d9]{white-space:pre-line}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.aecdfa78.css:
--------------------------------------------------------------------------------
1 | .text_hidden[data-v-c0cb4eb2]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}
2 |
--------------------------------------------------------------------------------
/frontend/assets/index.be29c95e.css:
--------------------------------------------------------------------------------
1 | .material-index[data-v-15a46c2f]{min-width:700px}.material-index[data-v-15a46c2f] .el-tabs{height:calc(100vh - 180px);display:flex;flex-direction:column}.material-index[data-v-15a46c2f] .el-tabs .el-tabs__header{margin-bottom:0!important}.material-index[data-v-15a46c2f] .el-tabs .el-tabs__content,.material-index[data-v-15a46c2f] .el-tabs .el-tab-pane{min-height:0;flex:1;display:flex;flex-direction:column}
2 |
--------------------------------------------------------------------------------
/frontend/assets/lodash-unified.d120b703.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/frontend/assets/login.343b5475.css:
--------------------------------------------------------------------------------
1 | .login[data-v-0e999780]{background-image:url(/assets/login_bg.2f630cea.png);min-height:100vh;background-size:cover;background-position:center;background-repeat:no-repeat}.login .login-card[data-v-0e999780]{height:400px}
2 |
--------------------------------------------------------------------------------
/frontend/assets/login_bg.2f630cea.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/login_bg.2f630cea.png
--------------------------------------------------------------------------------
/frontend/assets/memoize-one.5eaee740.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/frontend/assets/menu.52becb26.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function n(e){return t.get({url:"/system/menu/list",params:e})}function s(e){return t.post({url:"/system/menu/add",params:e})}function r(e){return t.post({url:"/system/menu/edit",params:e})}function m(e){return t.post({url:"/system/menu/del",params:e})}function i(e){return t.get({url:"/system/menu/detail",params:e})}export{r as a,s as b,i as c,m as d,n as m};
2 |
--------------------------------------------------------------------------------
/frontend/assets/menu.a050bec6.css:
--------------------------------------------------------------------------------
1 | .pages-menu[data-v-a5360079] .el-menu-item{border-color:transparent}.pages-menu[data-v-a5360079] .el-menu-item.is-active{border-right-width:2px;border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}
2 |
--------------------------------------------------------------------------------
/frontend/assets/menu_role.4823a023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/menu_role.4823a023.png
--------------------------------------------------------------------------------
/frontend/assets/message.8c01f477.js:
--------------------------------------------------------------------------------
1 | import{r as s}from"./index.b60a26c4.js";function n(t){return s.get({url:"/setting/notice/list",params:t})}function i(t){return s.get({url:"/setting/notice/detail",params:t})}function r(t){return s.post({url:"/setting/notice/save",params:t})}function o(){return s.get({url:"/setting/sms/list"})}function u(t){return s.get({url:"/setting/sms/detail",params:t})}function a(t){return s.post({url:"/setting/sms/save",params:t})}export{n as a,a as b,u as c,o as d,i as n,r as s};
2 |
--------------------------------------------------------------------------------
/frontend/assets/my_topbg.137a6c56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/my_topbg.137a6c56.png
--------------------------------------------------------------------------------
/frontend/assets/no_perms.a56e95a5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/no_perms.a56e95a5.png
--------------------------------------------------------------------------------
/frontend/assets/picker.05436930.css:
--------------------------------------------------------------------------------
1 | .link-menu[data-v-2f26c0ad]{--el-menu-item-height: 40px}.link-menu[data-v-2f26c0ad] .el-menu-item{border-color:transparent}.link-menu[data-v-2f26c0ad] .el-menu-item.is-active{border-right-width:2px;border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.link-picker[data-v-a42918e4] .el-input.is-disabled .el-input__inner,.link-picker[data-v-a42918e4] .el-input.is-disabled .el-input__suffix{cursor:not-allowed}.link-picker[data-v-a42918e4] .el-input .el-input__inner,.link-picker[data-v-a42918e4] .el-input .el-input__suffix{cursor:pointer}
2 |
--------------------------------------------------------------------------------
/frontend/assets/post.2ca46716.js:
--------------------------------------------------------------------------------
1 | import{r as s}from"./index.b60a26c4.js";function o(t){return s.get({url:"/system/post/list",params:t})}function r(t){return s.get({url:"/system/post/all",params:t})}function u(t){return s.post({url:"/system/post/add",params:t})}function n(t){return s.post({url:"/system/post/edit",params:t})}function p(t){return s.post({url:"/system/post/del",params:t})}function l(t){return s.get({url:"/system/post/detail",params:t})}export{u as a,l as b,p as c,o as d,r as e,n as p};
2 |
--------------------------------------------------------------------------------
/frontend/assets/preview.6e931073.css:
--------------------------------------------------------------------------------
1 | .pages-preview[data-v-d63d893f]{background-color:#f8f8f8;width:360px;height:615px;color:#333}.pages-preview .select[data-v-d63d893f]{border-style:solid;border-color:var(--el-color-primary)}
2 |
--------------------------------------------------------------------------------
/frontend/assets/qq_group.3084d316.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/frontend/assets/qq_group.3084d316.png
--------------------------------------------------------------------------------
/frontend/assets/role.6aeb8c72.js:
--------------------------------------------------------------------------------
1 | import{r}from"./index.b60a26c4.js";function l(e){return r.get({url:"/system/role/list",params:e})}function s(e){return r.get({url:"/system/role/all",params:e})}function o(e){return r.get({url:"/system/role/detail",params:e})}function u(e){return r.post({url:"/system/role/add",params:e})}function n(e){return r.post({url:"/system/role/edit",params:e})}function i(e){return r.post({url:"/system/role/del",params:e})}export{n as a,o as b,u as c,i as d,l as e,s as r};
2 |
--------------------------------------------------------------------------------
/frontend/assets/system.1b516774.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function s(){return t.get({url:"/monitor/server"})}function o(e){return t.get({url:"/system/log/operate",params:e})}function n(){return t.get({url:"/monitor/cache"})}export{s as a,o as b,n as s};
2 |
--------------------------------------------------------------------------------
/frontend/assets/tabbar.75f7a8d8.css:
--------------------------------------------------------------------------------
1 | .decoration-tabbar[data-v-6338a705]{min-height:calc(100vh - var(--navbar-height) - 80px);display:flex;flex-direction:column}.decoration-tabbar .pages-preview[data-v-6338a705]{background-color:#f7f7f7;width:360px;height:615px;color:#333;position:relative}.decoration-tabbar .pages-preview .tabbar[data-v-6338a705]{position:absolute;height:50px;background-color:#fff;bottom:0;width:100%;border:2px solid var(--el-color-primary)}
2 |
--------------------------------------------------------------------------------
/frontend/assets/useDictOptions.b9a39236.js:
--------------------------------------------------------------------------------
1 | import"./index.b60a26c4.js";import{a1 as p,t as f}from"./@vue.a137a740.js";function d(a){const s=p({}),e=Object.keys(a),i=e.map(o=>{const t=a[o];return s[o]=[],()=>t.api(f(t.params)||{})}),r=async()=>{(await Promise.allSettled(i.map(t=>t()))).forEach((t,u)=>{const n=e[u];if(t.status=="fulfilled"){const{transformData:c}=a[n],l=c?c(t.value):t.value;s[n]=l}})};return r(),{optionsData:s,refresh:r}}export{d as u};
2 |
--------------------------------------------------------------------------------
/frontend/assets/user.883bd654.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function s(){return t.get({url:"/setting/user/detail"})}function n(e){return t.post({url:"/setting/user/save",params:e})}function u(){return t.get({url:"/setting/login/detail"})}function i(e){return t.post({url:"/setting/login/save",params:e})}export{s as a,n as b,u as g,i as s};
2 |
--------------------------------------------------------------------------------
/frontend/assets/vue-clipboard3.51d666ae.js:
--------------------------------------------------------------------------------
1 | import{C as a}from"./clipboard.e9b83688.js";const l=o=>{const r=(o==null?void 0:o.appendToBody)===void 0?!0:o.appendToBody;return{toClipboard(c,t){return new Promise((i,u)=>{const e=document.createElement("button"),d=new a(e,{text:()=>c,action:()=>"copy",container:t!==void 0?t:document.body});d.on("success",n=>{d.destroy(),i(n)}),d.on("error",n=>{d.destroy(),u(n)}),r&&document.body.appendChild(e),e.click(),r&&document.body.removeChild(e)})}}};export{l as u};
2 |
--------------------------------------------------------------------------------
/frontend/assets/website.67499d41.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function o(){return t.get({url:"/setting/copyright/detail"})}function s(e){return t.post({url:"/setting/copyright/save",params:e})}function i(){return t.get({url:"/setting/website/detail"})}function n(e){return t.post({url:"/setting/website/save",params:e})}function u(){return t.get({url:"/setting/protocol/detail"})}function g(e){return t.post({url:"/setting/protocol/save",params:e})}export{i as a,n as b,u as c,g as d,o as g,s};
2 |
--------------------------------------------------------------------------------
/h5/assets/account.55f2d7a8.js:
--------------------------------------------------------------------------------
1 | import{c as t}from"./client.68d036db.js";import{C as r}from"./index.cfa79457.js";function n(n){return r.post({url:"/login/check",data:{...n,client:t}})}function o(n){return r.post({url:"/login/register",data:{...n,client:t}})}function a(t){return r.post({url:"/login/forgotPassword",data:t})}function i(){return r.get({url:"/login/codeUrl",data:{url:location.href}})}function e(t){return r.get({url:"/login/oaLogin",data:t})}export{e as O,a as f,i as g,n as l,o as r};
2 |
--------------------------------------------------------------------------------
/h5/assets/appEnums.a2ba827b.js:
--------------------------------------------------------------------------------
1 | var I=(I=>(I[I.MP_WEIXIN=1]="MP_WEIXIN",I[I.OA_WEIXIN=2]="OA_WEIXIN",I[I.H5=3]="H5",I[I.IOS=5]="IOS",I[I.ANDROID=6]="ANDROID",I))(I||{}),N=(I=>(I[I.LOGIN=101]="LOGIN",I[I.BIND_MOBILE=102]="BIND_MOBILE",I[I.CHANGE_MOBILE=103]="CHANGE_MOBILE",I[I.FIND_PASSWORD=104]="FIND_PASSWORD",I))(N||{}),E=(I=>(I.NONE="",I.AVATAR="avatar",I.USERNAME="username",I.NICKNAME="nickname",I.SEX="sex",I))(E||{});export{I as C,E as F,N as S};
2 |
--------------------------------------------------------------------------------
/h5/assets/as_us.a2f8b82c.css:
--------------------------------------------------------------------------------
1 | .as-us .img[data-v-31e0ee28]{width:5rem;height:5rem;border-radius:.625rem;margin-top:3rem}
2 |
--------------------------------------------------------------------------------
/h5/assets/bind_mobile.883a800d.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-3b29402b]{height:100%}
2 |
--------------------------------------------------------------------------------
/h5/assets/change_password.426e67e4.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-6d296437]{height:100%}
2 |
--------------------------------------------------------------------------------
/h5/assets/client.68d036db.js:
--------------------------------------------------------------------------------
1 | import{C as I}from"./appEnums.a2ba827b.js";const n=()=>/MicroMessenger/i.test(navigator.userAgent);function s(){const I=navigator.userAgent;return I.indexOf("Android")>-1||I.indexOf("Adr")>-1}const r=(({MP_WEIXIN:I,OA_WEIXIN:s,H5:r,IOS:t,ANDROID:O,OTHER:a})=>n()?s():r())({MP_WEIXIN:()=>I.MP_WEIXIN,OA_WEIXIN:()=>I.OA_WEIXIN,H5:()=>I.H5,IOS:()=>I.IOS,ANDROID:()=>I.ANDROID,OTHER:()=>null});export{n as a,r as c,s as i};
2 |
--------------------------------------------------------------------------------
/h5/assets/collection.c4157529.css:
--------------------------------------------------------------------------------
1 | .u-swipe-action[data-v-d0fdd334]{width:auto;height:initial;position:relative;overflow:hidden}.u-swipe-view[data-v-d0fdd334]{display:flex;flex-direction:row;height:initial;position:relative}.u-swipe-content[data-v-d0fdd334]{flex:1}.u-swipe-del[data-v-d0fdd334]{position:relative;font-size:.9375rem;color:#fff}.u-btn-text[data-v-d0fdd334]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
2 |
--------------------------------------------------------------------------------
/h5/assets/forget_pwd.c3cfcc99.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-1fdc250a]{height:100%}
2 |
--------------------------------------------------------------------------------
/h5/assets/icon_visit.21b6ed3b.js:
--------------------------------------------------------------------------------
1 | var i="/mobile/static/images/icon/icon_visit.png";export{i as _};
2 |
--------------------------------------------------------------------------------
/h5/assets/icon_wx.a848c744.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/assets/icon_wx.a848c744.png
--------------------------------------------------------------------------------
/h5/assets/index.40995080.css:
--------------------------------------------------------------------------------
1 | .article-title[data-v-074bd20a]:before{content:"";width:.25rem;height:1.0625rem;display:block;margin-right:.3125rem;background:#4173ff}
2 |
--------------------------------------------------------------------------------
/h5/assets/news-card.9d2e9b2e.css:
--------------------------------------------------------------------------------
1 | .news-card[data-v-125d567f]{border-bottom:1px solid #f8f8f8}.news-card-content-title[data-v-125d567f]{-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.news-card-content-intro[data-v-125d567f]{-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}
2 |
--------------------------------------------------------------------------------
/h5/assets/news.c70d38d5.js:
--------------------------------------------------------------------------------
1 | import{C as t}from"./index.cfa79457.js";function r(){return t.get({url:"/article/category"})}function a(r){return t.get({url:"/article/list",data:r})}function e(r){return t.get({url:"/article/detail",data:r})}function c(r){return t.post({url:"/article/addCollect",data:r},{isAuth:!0})}function l(r){return t.post({url:"/article/cancelCollect",data:r},{isAuth:!0})}function n(){return t.get({url:"/article/collect"})}export{r as a,e as b,l as c,c as d,n as e,a as g};
2 |
--------------------------------------------------------------------------------
/h5/assets/news_detail.3a6411e3.css:
--------------------------------------------------------------------------------
1 | .news-detail[data-v-3a16a61e]{height:100%}.news-detail-header[data-v-3a16a61e]{border-bottom:.0625rem solid #f8f8f8}.news-detail-section .summary[data-v-3a16a61e]{border-radius:.375rem;background-color:#f7f7f7}.news-detail .panel-btn[data-v-3a16a61e]{position:fixed;right:.9375rem;height:2.5rem;bottom:2.5rem;border-radius:1.25rem;background:rgba(255,255,255,.95);box-shadow:0 0 10px rgba(0,0,0,.16)}
2 |
--------------------------------------------------------------------------------
/h5/assets/pages-agreement-agreement.950d45dd.js:
--------------------------------------------------------------------------------
1 | import{d as a,z as s,Y as e,o as t,c as n,w as r,b as o,au as l,an as p,r as u,a as c,k as m}from"./index.cfa79457.js";import{_ as d}from"./u-parse.09d7a9f1.js";import"./plugin-vue_export-helper.21dcd24c.js";const i=a({__name:"agreement",setup(a){let i=s("");const f=s("");return e((a=>{a.type&&(i=a.type,(async a=>{const s=await l({type:a});console.log(s,"res"),f.value=s.content,p({title:s.name})})(i))})),(a,s)=>{const e=u(c("u-parse"),d),l=m;return t(),n(l,{class:""},{default:r((()=>[o(e,{html:f.value},null,8,["html"])])),_:1})}}});export{i as default};
2 |
--------------------------------------------------------------------------------
/h5/assets/pages-as_us-as_us.0f4583ac.js:
--------------------------------------------------------------------------------
1 | import{d as s,u as e,o as a,c as t,w as o,b as c,g as r,l,t as n,n as u,k as f}from"./index.cfa79457.js";import{_ as d}from"./plugin-vue_export-helper.21dcd24c.js";var i=d(s({__name:"as_us",setup(s){const d=e();return(s,e)=>{const i=u,m=f;return a(),t(m,{class:"as-us flex flex-1 flex-col items-center"},{default:o((()=>[c(i,{src:r(d).config.website.logo,mode:"",class:"img"},null,8,["src"]),c(m,{class:"text-content mt-[20rpx]"},{default:o((()=>[l("当前版本"+n(r(d).config.version),1)])),_:1})])),_:1})}}}),[["__scopeId","data-v-31e0ee28"]]);export{i as default};
2 |
--------------------------------------------------------------------------------
/h5/assets/pages-empty-empty.b0d17a0b.js:
--------------------------------------------------------------------------------
1 | import{o as r,e}from"./index.cfa79457.js";import{_ as o}from"./plugin-vue_export-helper.21dcd24c.js";var a=o({},[["render",function(o,a){return r(),e("div")}]]);export{a as default};
2 |
--------------------------------------------------------------------------------
/h5/assets/pages-webview-webview.3ceac09f.js:
--------------------------------------------------------------------------------
1 | import{d as e,z as s,Y as a,o as n,c as o,aF as r}from"./index.cfa79457.js";const t=e({__name:"webview",setup(e){const t=s("");return a((e=>{t.value=decodeURIComponent(e.url)})),(e,s)=>{const a=r;return n(),o(a,{src:t.value},null,8,["src"])}}});export{t as default};
2 |
--------------------------------------------------------------------------------
/h5/assets/plugin-vue_export-helper.21dcd24c.js:
--------------------------------------------------------------------------------
1 | var o=(o,r)=>{const t=o.__vccOpts||o;for(const[c,s]of r)t[c]=s;return t};export{o as _};
2 |
--------------------------------------------------------------------------------
/h5/assets/register.7aa73084.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-b7aa7a3e]{height:100%}
2 |
--------------------------------------------------------------------------------
/h5/assets/search.5426327c.css:
--------------------------------------------------------------------------------
1 | .suggest[data-v-6b91f383]{height:100%}.suggest .keyword[data-v-6b91f383]{display:inline-block;margin:.75rem .5rem 0 0;padding:.25rem .75rem;border-radius:.8125rem;background-color:#f4f4f4}.search-content[data-v-629a231d]{height:calc(100vh - 46px - env(safe-area-inset-bottom))}.search-content-s[data-v-629a231d]{height:100%}
2 |
--------------------------------------------------------------------------------
/h5/assets/shop.1aa20054.js:
--------------------------------------------------------------------------------
1 | import{C as r}from"./index.cfa79457.js";function t(){return r.get({url:"/index"})}function e(t){return r.get({url:"/decorate",data:t})}function a(){return r.get({url:"/hotSearch"})}function n(t){return r.get({url:"/search",data:t})}export{e as a,a as b,n as c,t as g};
2 |
--------------------------------------------------------------------------------
/h5/assets/u-image.a7813cd9.css:
--------------------------------------------------------------------------------
1 | .u-image[data-v-48a6dea4]{position:relative;transition:opacity .5s ease-in-out}.u-image__image[data-v-48a6dea4]{width:100%;height:100%}.u-image__loading[data-v-48a6dea4],.u-image__error[data-v-48a6dea4]{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:row;align-items:center;justify-content:center;background-color:#f3f4f6;color:#999;font-size:1.4375rem}
2 |
--------------------------------------------------------------------------------
/h5/assets/u-parse.93f983af.css:
--------------------------------------------------------------------------------
1 | @-webkit-keyframes _show-49097824{0%{opacity:0}to{opacity:1}}@keyframes _show-49097824{0%{opacity:0}to{opacity:1}}
2 |
--------------------------------------------------------------------------------
/h5/assets/u-search.35cfd0ff.css:
--------------------------------------------------------------------------------
1 | .u-search[data-v-47eb8750]{display:flex;flex-direction:row;align-items:center;flex:1}.u-content[data-v-47eb8750]{display:flex;flex-direction:row;align-items:center;padding:0 .5625rem;flex:1}.u-clear-icon[data-v-47eb8750]{display:flex;flex-direction:row;align-items:center}.u-input[data-v-47eb8750]{flex:1;font-size:.875rem;line-height:1;margin:0 .3125rem;color:#999}.u-close-wrap[data-v-47eb8750]{width:1.25rem;height:100%;display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:50%}.u-placeholder-class[data-v-47eb8750]{color:#999}.u-action[data-v-47eb8750]{font-size:.875rem;color:#333;width:0;overflow:hidden;transition:all .3s;white-space:nowrap;text-align:center}.u-action-active[data-v-47eb8750]{width:2.5rem;margin-left:.3125rem}
2 |
--------------------------------------------------------------------------------
/h5/assets/u-verification-code.e967c1e9.css:
--------------------------------------------------------------------------------
1 | .u-code-wrap[data-v-1cef9d0f]{width:0;height:0;position:fixed;z-index:-1}
2 |
--------------------------------------------------------------------------------
/h5/assets/user.4b21793f.css:
--------------------------------------------------------------------------------
1 | .user-info[data-v-0f3174a2]{background:url(/static/images/user/my_topbg.png);height:115px;background-position:bottom;background-size:100% auto}
2 |
--------------------------------------------------------------------------------
/h5/assets/user_set.e61ca628.css:
--------------------------------------------------------------------------------
1 | .u-tips[data-v-72a4be36]{font-size:.8125rem;text-align:center;padding:1.0625rem 0;line-height:1.5;color:#999}.u-action-sheet-item[data-v-72a4be36]{display:flex;flex-direction:row;line-height:1;justify-content:center;align-items:center;font-size:1rem;padding:1.0625rem 0;flex-direction:column}.u-action-sheet-item__subtext[data-v-72a4be36]{font-size:.75rem;color:#999;margin-top:.625rem}.u-gab[data-v-72a4be36]{height:.375rem;background-color:#eaeaec}.u-actionsheet-cancel[data-v-72a4be36]{color:#333}.user-set .item[data-v-8f36ed3e]{padding:.9375rem}.user-set .btn-border[data-v-8f36ed3e]{border-bottom:.0625rem solid #f8f8f8}
2 |
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_code.png
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_mobile.png
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_password.png
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_user.png
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_visit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_visit.png
--------------------------------------------------------------------------------
/h5/static/images/icon/icon_wx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/icon/icon_wx.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/home.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/home_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/home_s.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/news.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/news_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/news_s.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/user.png
--------------------------------------------------------------------------------
/h5/static/images/tabs/user_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/tabs/user_s.png
--------------------------------------------------------------------------------
/h5/static/images/user/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/user/default_avatar.png
--------------------------------------------------------------------------------
/h5/static/images/user/my_topbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/h5/static/images/user/my_topbg.png
--------------------------------------------------------------------------------
/public/admin/assets/@floating-ui.dd8b295f.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/admin/assets/BrowserPreview_tmp.f88b03df.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/BrowserPreview_tmp.f88b03df.png
--------------------------------------------------------------------------------
/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang.79deee70.js:
--------------------------------------------------------------------------------
1 | import{w as i}from"./index.310dbf76.js";import{d as l,o as t,c as d,a as m,V as f,O as c,S as p,u as g,aI as b}from"./@vue.a137a740.js";const u={class:"pages-setting"},w={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},k=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})}},setup(e){return(y,x)=>{var s,a,n,o,r;return t(),d("div",u,[m("div",w,f((s=e.widget)==null?void 0:s.title),1),(t(),c(b,null,[(t(),c(p((n=g(i)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(r=e.widget)==null?void 0:r.styles},null,8,["content","styles"]))],1024))])}}});export{k as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.15bf174a.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.d3150e80.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.9653ec08.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.9653ec08.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.db9092b2.js:
--------------------------------------------------------------------------------
1 | import"./attr.vue_vue_type_script_setup_true_lang.9820b9a5.js";import{_ as t}from"./attr.vue_vue_type_script_setup_true_lang.9820b9a5.js";import"./@vue.a137a740.js";export{t as default};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.vue_vue_type_script_setup_true_lang.9653ec08.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.vue_vue_type_script_setup_true_lang.9820b9a5.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/attr.vue_vue_type_script_setup_true_lang.a6ae21ee.js:
--------------------------------------------------------------------------------
1 | import{d as e,o as t,c as o}from"./@vue.a137a740.js";const r=e({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(c){return(n,a)=>(t(),o("div"))}});export{r as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/balanced-match.d2a36341.js:
--------------------------------------------------------------------------------
1 | var l=function(r,a,e){for(var s=0,t={},n=0;n1?e.substring(t.start+r.length,t.end):"",t.post=e.slice(t.end+a.length),t};export{l as b};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/cache.b08e0053.css:
--------------------------------------------------------------------------------
1 | .el-table .el-table__cell[data-v-4f669e5f]{min-width:120px}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/consumer.e63bb0ad.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function u(r){return t.get({url:"/user/list",params:r})}function s(r){return t.get({url:"/user/detail",params:r})}function i(r){return t.post({url:"/user/edit",params:r})}export{u as a,s as g,i as u};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.75595e09.css:
--------------------------------------------------------------------------------
1 | .search[data-v-6fb29c10]{background-color:#fff;padding:7px 12px}.search .search-con[data-v-6fb29c10]{height:100%;height:36px;border-radius:36px;background:#f4f4f4;color:#999}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.9f244b19.css:
--------------------------------------------------------------------------------
1 | .customer-service[data-v-74f49970]{margin:10px 18px;border-radius:10px;padding:50px 55px 80px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.c40e4b89.css:
--------------------------------------------------------------------------------
1 | .news .news-title[data-v-6445a67e]:before{content:"";width:4px;height:17px;display:block;margin-right:5px;background:#4173ff}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.c9a2d497.css:
--------------------------------------------------------------------------------
1 | .user-info[data-v-cdcc3d15]{background:url(/assets/my_topbg.137a6c56.png);height:115px;background-position:bottom;background-size:100% auto}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.efb8af20.css:
--------------------------------------------------------------------------------
1 | .my-service[data-v-a7e52d47]{margin:10px 10px 0;background-color:#fff;border-radius:7px}.my-service .title[data-v-a7e52d47]{border-bottom:1px solid #e5e5e5;font-size:16px;font-weight:500}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.vue_vue_type_script_setup_true_lang.12563a6c.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as s,e as c,o as r,c as i,a as p,X as m,u as d}from"./@vue.a137a740.js";const u={class:"banner mx-[10px] mt-[10px]"},_={class:"banner-image"},h=s({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const n=t,a=c(()=>{const{data:e}=n.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,l)=>(r(),i("div",u,[p("div",_,[m(o,{width:"100%",height:"100px",src:d(a),fit:"contain"},null,8,["src"])])]))}});export{h as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.vue_vue_type_script_setup_true_lang.43e08694.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as r,o as e,c as t,a,W as l,a8 as p,X as i,V as d}from"./@vue.a137a740.js";const m={class:"nav bg-white pt-[15px] pb-[8px]"},_={class:"flex flex-wrap"},x={class:"mt-[7px]"},b=r({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){return(f,u)=>(e(),t("div",m,[a("div",_,[(e(!0),t(l,null,p(n.content.data,(s,c)=>(e(),t("div",{key:c,class:"flex flex-col items-center w-1/5 mb-[15px]"},[i(o,{width:"41px",height:"41px",src:s.image,alt:""},null,8,["src"]),a("div",x,d(s.name),1)]))),128))])]))}});export{b as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/content.vue_vue_type_script_setup_true_lang.c47a6b69.js:
--------------------------------------------------------------------------------
1 | import o from"./decoration-img.e2c4084c.js";import{d as s,e as c,o as r,c as i,a as p,X as d,u as m}from"./@vue.a137a740.js";const u={class:"banner"},_={class:"banner-image"},h=s({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const n=t,a=c(()=>{const{data:e}=n.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,l)=>(r(),i("div",u,[p("div",_,[d(o,{width:"100%",height:"170px",src:m(a),fit:"contain"},null,8,["src"])])]))}});export{h as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/decoration-img.a64d82f7.css:
--------------------------------------------------------------------------------
1 | .el-image[data-v-73b9b608]{display:block}.el-image .image-slot[data-v-73b9b608]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:#fafafa;color:#909399}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/decoration.ab9ddaa9.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function a(e){return t.get({url:"/decorate/pages/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate/pages/save",params:e})}function c(e){return t.get({url:"/decorate/data/article",params:e})}function n(e){return t.get({url:"/decorate/tabbar/detail",params:e})}function s(e){return t.post({url:"/decorate/tabbar/save",params:e})}export{a,n as b,s as c,c as g,o as s};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/default_avatar.fa19527b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/default_avatar.fa19527b.png
--------------------------------------------------------------------------------
/public/admin/assets/department.a2353fbd.js:
--------------------------------------------------------------------------------
1 | import{r as e}from"./index.b60a26c4.js";function r(t){return e.get({url:"/system/dept/list",params:t})}function d(t){return e.post({url:"/system/dept/add",params:t})}function u(t){return e.post({url:"/system/dept/edit",params:t})}function n(t){return e.post({url:"/system/dept/del",params:t})}function p(t){return e.get({url:"/system/dept/detail",params:t})}export{u as a,d as b,p as c,r as d,n as e};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/dict.7219bd74.js:
--------------------------------------------------------------------------------
1 | import{r as e}from"./index.b60a26c4.js";function n(t){return e.get({url:"/setting/dict/type/list",params:t})}function d(t){return e.get({url:"/setting/dict/type/all",params:t})}function r(t){return e.post({url:"/setting/dict/type/add",params:t})}function s(t){return e.post({url:"/setting/dict/type/edit",params:t})}function a(t){return e.post({url:"/setting/dict/type/del",params:t})}function c(t){return e.get({url:"/setting/dict/data/list",params:t},{ignoreCancelToken:!0})}function u(t){return e.post({url:"/setting/dict/data/add",params:t})}function l(t){return e.post({url:"/setting/dict/data/edit",params:t})}function o(t){return e.post({url:"/setting/dict/data/del",params:t})}export{l as a,u as b,o as c,d,c as e,s as f,r as g,a as h,n as i};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/error.be93caf8.css:
--------------------------------------------------------------------------------
1 | .error[data-v-a47523cc]{text-align:center;height:100vh;display:flex;justify-content:center;align-items:center}.error .error-code[data-v-a47523cc]{color:var(--el-color-primary);font-size:150px}.error .el-button[data-v-a47523cc]{width:176px}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/escape-html.e5dfadb9.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * escape-html
3 | * Copyright(c) 2012-2013 TJ Holowaychuk
4 | * Copyright(c) 2015 Andreas Lubbe
5 | * Copyright(c) 2015 Tiancheng "Timothy" Gu
6 | * MIT Licensed
7 | */var i=/["'&<>]/,u=l;function l(n){var a=""+n,c=i.exec(a);if(!c)return a;var r,s="",e=0,t=0;for(e=c.index;e(s(),n("div",c,[_("div",{class:"footer-btns__content",style:d(e.fixed?"position: fixed":"")},[a(o.$slots,"default",{},void 0,!0)],4)]))}});const u=r(i,[["__scopeId","data-v-0b44b424"]]);export{u as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.0d25a475.css:
--------------------------------------------------------------------------------
1 | .w-e-full-screen-container{z-index:999}.w-e-text-container [data-slate-editor] ul{list-style:disc}.w-e-text-container [data-slate-editor] ol{list-style:decimal}h1{font-size:2em}h2{font-size:1.5em}h3{font-size:1.17em}h4{font-size:1em}h5{font-size:.83em}h1,h2,h3,h4,h5{font-weight:700}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.15f50578.css:
--------------------------------------------------------------------------------
1 | .decoration-pages[data-v-a4bc0153]{min-height:calc(100vh - var(--navbar-height) - 80px);display:flex;flex-direction:column}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.2a55a6b3.css:
--------------------------------------------------------------------------------
1 | .hot-search .hot-search-phone[data-v-2eb25184]{width:300px}.hot-search .hot-search-phone-content[data-v-2eb25184]{width:100%;height:530px;padding:12px;border-radius:10px;border:1px solid #e6e6e6}.hot-search .hot-search-phone-content .search-com .search-con[data-v-2eb25184]{height:100%;height:36px;border-radius:36px;background:#f4f4f4;color:#999}.hot-search .hot-search-phone-content .hot-search-title[data-v-2eb25184]{padding:10px 0;font-size:13px}.hot-search .hot-search-phone-content .hot-search-text span[data-v-2eb25184]{font-size:12px;border-radius:100px;padding:5px 10px;margin:0 6px 6px 0;display:inline-block;background-color:#f4f4f4}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.2ace3fcf.css:
--------------------------------------------------------------------------------
1 | .footer-btns[data-v-0b44b424]{height:60px}.footer-btns__content[data-v-0b44b424]{bottom:0;height:60px;right:0;left:0;z-index:99;display:flex;align-items:center;justify-content:center;background-color:var(--el-bg-color);--tw-shadow: var(--el-box-shadow);--tw-shadow-colored: var(--el-box-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.796a76b8.js:
--------------------------------------------------------------------------------
1 | import{d,b as r}from"./index.b60a26c4.js";import{d as c,o as s,c as n,K as p,$ as _,X as i,T as m}from"./@vue.a137a740.js";const u=c({props:{showClose:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:o}){return{handleClose:()=>{o("close")}}}});const f={class:"del-wrap"};function C(e,o,t,h,$,v){const a=r;return s(),n("div",f,[p(e.$slots,"default",{},void 0,!0),e.showClose?(s(),n("div",{key:0,class:"icon-close",onClick:o[0]||(o[0]=_((...l)=>e.handleClose&&e.handleClose(...l),["stop"]))},[i(a,{size:12,name:"el-icon-CloseBold"})])):m("",!0)])}const y=d(u,[["render",C],["__scopeId","data-v-2a98aa67"]]);export{y as _};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.9bce7fe7.css:
--------------------------------------------------------------------------------
1 | .del-wrap[data-v-2a98aa67]{position:relative}.del-wrap:hover>.icon-close[data-v-2a98aa67]{display:flex}.del-wrap .icon-close[data-v-2a98aa67]{display:none;position:absolute;top:-8px;right:-8px;width:16px;height:16px;background-color:#0000004d;justify-content:center;align-items:center;border-radius:50%;color:#fff;cursor:pointer}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.a318de61.css:
--------------------------------------------------------------------------------
1 | .dialog-body[data-v-b8e715d9]{white-space:pre-line}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.aecdfa78.css:
--------------------------------------------------------------------------------
1 | .text_hidden[data-v-c0cb4eb2]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/index.be29c95e.css:
--------------------------------------------------------------------------------
1 | .material-index[data-v-15a46c2f]{min-width:700px}.material-index[data-v-15a46c2f] .el-tabs{height:calc(100vh - 180px);display:flex;flex-direction:column}.material-index[data-v-15a46c2f] .el-tabs .el-tabs__header{margin-bottom:0!important}.material-index[data-v-15a46c2f] .el-tabs .el-tabs__content,.material-index[data-v-15a46c2f] .el-tabs .el-tab-pane{min-height:0;flex:1;display:flex;flex-direction:column}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/lodash-unified.d120b703.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/admin/assets/login.343b5475.css:
--------------------------------------------------------------------------------
1 | .login[data-v-0e999780]{background-image:url(/assets/login_bg.2f630cea.png);min-height:100vh;background-size:cover;background-position:center;background-repeat:no-repeat}.login .login-card[data-v-0e999780]{height:400px}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/login_bg.2f630cea.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/login_bg.2f630cea.png
--------------------------------------------------------------------------------
/public/admin/assets/memoize-one.5eaee740.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/admin/assets/menu.52becb26.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function n(e){return t.get({url:"/system/menu/list",params:e})}function s(e){return t.post({url:"/system/menu/add",params:e})}function r(e){return t.post({url:"/system/menu/edit",params:e})}function m(e){return t.post({url:"/system/menu/del",params:e})}function i(e){return t.get({url:"/system/menu/detail",params:e})}export{r as a,s as b,i as c,m as d,n as m};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/menu.a050bec6.css:
--------------------------------------------------------------------------------
1 | .pages-menu[data-v-a5360079] .el-menu-item{border-color:transparent}.pages-menu[data-v-a5360079] .el-menu-item.is-active{border-right-width:2px;border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/menu_role.4823a023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/menu_role.4823a023.png
--------------------------------------------------------------------------------
/public/admin/assets/message.8c01f477.js:
--------------------------------------------------------------------------------
1 | import{r as s}from"./index.b60a26c4.js";function n(t){return s.get({url:"/setting/notice/list",params:t})}function i(t){return s.get({url:"/setting/notice/detail",params:t})}function r(t){return s.post({url:"/setting/notice/save",params:t})}function o(){return s.get({url:"/setting/sms/list"})}function u(t){return s.get({url:"/setting/sms/detail",params:t})}function a(t){return s.post({url:"/setting/sms/save",params:t})}export{n as a,a as b,u as c,o as d,i as n,r as s};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/my_topbg.137a6c56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/my_topbg.137a6c56.png
--------------------------------------------------------------------------------
/public/admin/assets/no_perms.a56e95a5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/no_perms.a56e95a5.png
--------------------------------------------------------------------------------
/public/admin/assets/picker.05436930.css:
--------------------------------------------------------------------------------
1 | .link-menu[data-v-2f26c0ad]{--el-menu-item-height: 40px}.link-menu[data-v-2f26c0ad] .el-menu-item{border-color:transparent}.link-menu[data-v-2f26c0ad] .el-menu-item.is-active{border-right-width:2px;border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.link-picker[data-v-a42918e4] .el-input.is-disabled .el-input__inner,.link-picker[data-v-a42918e4] .el-input.is-disabled .el-input__suffix{cursor:not-allowed}.link-picker[data-v-a42918e4] .el-input .el-input__inner,.link-picker[data-v-a42918e4] .el-input .el-input__suffix{cursor:pointer}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/post.2ca46716.js:
--------------------------------------------------------------------------------
1 | import{r as s}from"./index.b60a26c4.js";function o(t){return s.get({url:"/system/post/list",params:t})}function r(t){return s.get({url:"/system/post/all",params:t})}function u(t){return s.post({url:"/system/post/add",params:t})}function n(t){return s.post({url:"/system/post/edit",params:t})}function p(t){return s.post({url:"/system/post/del",params:t})}function l(t){return s.get({url:"/system/post/detail",params:t})}export{u as a,l as b,p as c,o as d,r as e,n as p};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/preview.6e931073.css:
--------------------------------------------------------------------------------
1 | .pages-preview[data-v-d63d893f]{background-color:#f8f8f8;width:360px;height:615px;color:#333}.pages-preview .select[data-v-d63d893f]{border-style:solid;border-color:var(--el-color-primary)}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/qq_group.3084d316.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/admin/assets/qq_group.3084d316.png
--------------------------------------------------------------------------------
/public/admin/assets/role.6aeb8c72.js:
--------------------------------------------------------------------------------
1 | import{r}from"./index.b60a26c4.js";function l(e){return r.get({url:"/system/role/list",params:e})}function s(e){return r.get({url:"/system/role/all",params:e})}function o(e){return r.get({url:"/system/role/detail",params:e})}function u(e){return r.post({url:"/system/role/add",params:e})}function n(e){return r.post({url:"/system/role/edit",params:e})}function i(e){return r.post({url:"/system/role/del",params:e})}export{n as a,o as b,u as c,i as d,l as e,s as r};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/system.1b516774.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function s(){return t.get({url:"/monitor/server"})}function o(e){return t.get({url:"/system/log/operate",params:e})}function n(){return t.get({url:"/monitor/cache"})}export{s as a,o as b,n as s};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/tabbar.75f7a8d8.css:
--------------------------------------------------------------------------------
1 | .decoration-tabbar[data-v-6338a705]{min-height:calc(100vh - var(--navbar-height) - 80px);display:flex;flex-direction:column}.decoration-tabbar .pages-preview[data-v-6338a705]{background-color:#f7f7f7;width:360px;height:615px;color:#333;position:relative}.decoration-tabbar .pages-preview .tabbar[data-v-6338a705]{position:absolute;height:50px;background-color:#fff;bottom:0;width:100%;border:2px solid var(--el-color-primary)}
2 |
--------------------------------------------------------------------------------
/public/admin/assets/useDictOptions.b9a39236.js:
--------------------------------------------------------------------------------
1 | import"./index.b60a26c4.js";import{a1 as p,t as f}from"./@vue.a137a740.js";function d(a){const s=p({}),e=Object.keys(a),i=e.map(o=>{const t=a[o];return s[o]=[],()=>t.api(f(t.params)||{})}),r=async()=>{(await Promise.allSettled(i.map(t=>t()))).forEach((t,u)=>{const n=e[u];if(t.status=="fulfilled"){const{transformData:c}=a[n],l=c?c(t.value):t.value;s[n]=l}})};return r(),{optionsData:s,refresh:r}}export{d as u};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/user.883bd654.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function s(){return t.get({url:"/setting/user/detail"})}function n(e){return t.post({url:"/setting/user/save",params:e})}function u(){return t.get({url:"/setting/login/detail"})}function i(e){return t.post({url:"/setting/login/save",params:e})}export{s as a,n as b,u as g,i as s};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/vue-clipboard3.51d666ae.js:
--------------------------------------------------------------------------------
1 | import{C as a}from"./clipboard.e9b83688.js";const l=o=>{const r=(o==null?void 0:o.appendToBody)===void 0?!0:o.appendToBody;return{toClipboard(c,t){return new Promise((i,u)=>{const e=document.createElement("button"),d=new a(e,{text:()=>c,action:()=>"copy",container:t!==void 0?t:document.body});d.on("success",n=>{d.destroy(),i(n)}),d.on("error",n=>{d.destroy(),u(n)}),r&&document.body.appendChild(e),e.click(),r&&document.body.removeChild(e)})}}};export{l as u};
2 |
--------------------------------------------------------------------------------
/public/admin/assets/website.67499d41.js:
--------------------------------------------------------------------------------
1 | import{r as t}from"./index.b60a26c4.js";function o(){return t.get({url:"/setting/copyright/detail"})}function s(e){return t.post({url:"/setting/copyright/save",params:e})}function i(){return t.get({url:"/setting/website/detail"})}function n(e){return t.post({url:"/setting/website/save",params:e})}function u(){return t.get({url:"/setting/protocol/detail"})}function g(e){return t.post({url:"/setting/protocol/save",params:e})}export{i as a,n as b,u as c,g as d,o as g,s};
2 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Document
9 |
10 |
11 |
12 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/public/mobile/assets/account.55f2d7a8.js:
--------------------------------------------------------------------------------
1 | import{c as t}from"./client.68d036db.js";import{C as r}from"./index.cfa79457.js";function n(n){return r.post({url:"/login/check",data:{...n,client:t}})}function o(n){return r.post({url:"/login/register",data:{...n,client:t}})}function a(t){return r.post({url:"/login/forgotPassword",data:t})}function i(){return r.get({url:"/login/codeUrl",data:{url:location.href}})}function e(t){return r.get({url:"/login/oaLogin",data:t})}export{e as O,a as f,i as g,n as l,o as r};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/appEnums.a2ba827b.js:
--------------------------------------------------------------------------------
1 | var I=(I=>(I[I.MP_WEIXIN=1]="MP_WEIXIN",I[I.OA_WEIXIN=2]="OA_WEIXIN",I[I.H5=3]="H5",I[I.IOS=5]="IOS",I[I.ANDROID=6]="ANDROID",I))(I||{}),N=(I=>(I[I.LOGIN=101]="LOGIN",I[I.BIND_MOBILE=102]="BIND_MOBILE",I[I.CHANGE_MOBILE=103]="CHANGE_MOBILE",I[I.FIND_PASSWORD=104]="FIND_PASSWORD",I))(N||{}),E=(I=>(I.NONE="",I.AVATAR="avatar",I.USERNAME="username",I.NICKNAME="nickname",I.SEX="sex",I))(E||{});export{I as C,E as F,N as S};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/as_us.a2f8b82c.css:
--------------------------------------------------------------------------------
1 | .as-us .img[data-v-31e0ee28]{width:5rem;height:5rem;border-radius:.625rem;margin-top:3rem}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/bind_mobile.883a800d.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-3b29402b]{height:100%}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/change_password.426e67e4.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-6d296437]{height:100%}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/client.68d036db.js:
--------------------------------------------------------------------------------
1 | import{C as I}from"./appEnums.a2ba827b.js";const n=()=>/MicroMessenger/i.test(navigator.userAgent);function s(){const I=navigator.userAgent;return I.indexOf("Android")>-1||I.indexOf("Adr")>-1}const r=(({MP_WEIXIN:I,OA_WEIXIN:s,H5:r,IOS:t,ANDROID:O,OTHER:a})=>n()?s():r())({MP_WEIXIN:()=>I.MP_WEIXIN,OA_WEIXIN:()=>I.OA_WEIXIN,H5:()=>I.H5,IOS:()=>I.IOS,ANDROID:()=>I.ANDROID,OTHER:()=>null});export{n as a,r as c,s as i};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/collection.c4157529.css:
--------------------------------------------------------------------------------
1 | .u-swipe-action[data-v-d0fdd334]{width:auto;height:initial;position:relative;overflow:hidden}.u-swipe-view[data-v-d0fdd334]{display:flex;flex-direction:row;height:initial;position:relative}.u-swipe-content[data-v-d0fdd334]{flex:1}.u-swipe-del[data-v-d0fdd334]{position:relative;font-size:.9375rem;color:#fff}.u-btn-text[data-v-d0fdd334]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/forget_pwd.c3cfcc99.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-1fdc250a]{height:100%}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/icon_visit.21b6ed3b.js:
--------------------------------------------------------------------------------
1 | var i="/mobile/static/images/icon/icon_visit.png";export{i as _};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/icon_wx.a848c744.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/assets/icon_wx.a848c744.png
--------------------------------------------------------------------------------
/public/mobile/assets/index.40995080.css:
--------------------------------------------------------------------------------
1 | .article-title[data-v-074bd20a]:before{content:"";width:.25rem;height:1.0625rem;display:block;margin-right:.3125rem;background:#4173ff}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/news-card.9d2e9b2e.css:
--------------------------------------------------------------------------------
1 | .news-card[data-v-125d567f]{border-bottom:1px solid #f8f8f8}.news-card-content-title[data-v-125d567f]{-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.news-card-content-intro[data-v-125d567f]{-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/news.c70d38d5.js:
--------------------------------------------------------------------------------
1 | import{C as t}from"./index.cfa79457.js";function r(){return t.get({url:"/article/category"})}function a(r){return t.get({url:"/article/list",data:r})}function e(r){return t.get({url:"/article/detail",data:r})}function c(r){return t.post({url:"/article/addCollect",data:r},{isAuth:!0})}function l(r){return t.post({url:"/article/cancelCollect",data:r},{isAuth:!0})}function n(){return t.get({url:"/article/collect"})}export{r as a,e as b,l as c,c as d,n as e,a as g};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/news_detail.3a6411e3.css:
--------------------------------------------------------------------------------
1 | .news-detail[data-v-3a16a61e]{height:100%}.news-detail-header[data-v-3a16a61e]{border-bottom:.0625rem solid #f8f8f8}.news-detail-section .summary[data-v-3a16a61e]{border-radius:.375rem;background-color:#f7f7f7}.news-detail .panel-btn[data-v-3a16a61e]{position:fixed;right:.9375rem;height:2.5rem;bottom:2.5rem;border-radius:1.25rem;background:rgba(255,255,255,.95);box-shadow:0 0 10px rgba(0,0,0,.16)}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/pages-agreement-agreement.950d45dd.js:
--------------------------------------------------------------------------------
1 | import{d as a,z as s,Y as e,o as t,c as n,w as r,b as o,au as l,an as p,r as u,a as c,k as m}from"./index.cfa79457.js";import{_ as d}from"./u-parse.09d7a9f1.js";import"./plugin-vue_export-helper.21dcd24c.js";const i=a({__name:"agreement",setup(a){let i=s("");const f=s("");return e((a=>{a.type&&(i=a.type,(async a=>{const s=await l({type:a});console.log(s,"res"),f.value=s.content,p({title:s.name})})(i))})),(a,s)=>{const e=u(c("u-parse"),d),l=m;return t(),n(l,{class:""},{default:r((()=>[o(e,{html:f.value},null,8,["html"])])),_:1})}}});export{i as default};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/pages-as_us-as_us.0f4583ac.js:
--------------------------------------------------------------------------------
1 | import{d as s,u as e,o as a,c as t,w as o,b as c,g as r,l,t as n,n as u,k as f}from"./index.cfa79457.js";import{_ as d}from"./plugin-vue_export-helper.21dcd24c.js";var i=d(s({__name:"as_us",setup(s){const d=e();return(s,e)=>{const i=u,m=f;return a(),t(m,{class:"as-us flex flex-1 flex-col items-center"},{default:o((()=>[c(i,{src:r(d).config.website.logo,mode:"",class:"img"},null,8,["src"]),c(m,{class:"text-content mt-[20rpx]"},{default:o((()=>[l("当前版本"+n(r(d).config.version),1)])),_:1})])),_:1})}}}),[["__scopeId","data-v-31e0ee28"]]);export{i as default};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/pages-empty-empty.b0d17a0b.js:
--------------------------------------------------------------------------------
1 | import{o as r,e}from"./index.cfa79457.js";import{_ as o}from"./plugin-vue_export-helper.21dcd24c.js";var a=o({},[["render",function(o,a){return r(),e("div")}]]);export{a as default};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/pages-webview-webview.3ceac09f.js:
--------------------------------------------------------------------------------
1 | import{d as e,z as s,Y as a,o as n,c as o,aF as r}from"./index.cfa79457.js";const t=e({__name:"webview",setup(e){const t=s("");return a((e=>{t.value=decodeURIComponent(e.url)})),(e,s)=>{const a=r;return n(),o(a,{src:t.value},null,8,["src"])}}});export{t as default};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/plugin-vue_export-helper.21dcd24c.js:
--------------------------------------------------------------------------------
1 | var o=(o,r)=>{const t=o.__vccOpts||o;for(const[c,s]of r)t[c]=s;return t};export{o as _};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/register.7aa73084.css:
--------------------------------------------------------------------------------
1 | uni-page-body[data-v-b7aa7a3e]{height:100%}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/search.5426327c.css:
--------------------------------------------------------------------------------
1 | .suggest[data-v-6b91f383]{height:100%}.suggest .keyword[data-v-6b91f383]{display:inline-block;margin:.75rem .5rem 0 0;padding:.25rem .75rem;border-radius:.8125rem;background-color:#f4f4f4}.search-content[data-v-629a231d]{height:calc(100vh - 46px - env(safe-area-inset-bottom))}.search-content-s[data-v-629a231d]{height:100%}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/shop.1aa20054.js:
--------------------------------------------------------------------------------
1 | import{C as r}from"./index.cfa79457.js";function t(){return r.get({url:"/index"})}function e(t){return r.get({url:"/decorate",data:t})}function a(){return r.get({url:"/hotSearch"})}function n(t){return r.get({url:"/search",data:t})}export{e as a,a as b,n as c,t as g};
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/u-image.a7813cd9.css:
--------------------------------------------------------------------------------
1 | .u-image[data-v-48a6dea4]{position:relative;transition:opacity .5s ease-in-out}.u-image__image[data-v-48a6dea4]{width:100%;height:100%}.u-image__loading[data-v-48a6dea4],.u-image__error[data-v-48a6dea4]{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:row;align-items:center;justify-content:center;background-color:#f3f4f6;color:#999;font-size:1.4375rem}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/u-parse.93f983af.css:
--------------------------------------------------------------------------------
1 | @-webkit-keyframes _show-49097824{0%{opacity:0}to{opacity:1}}@keyframes _show-49097824{0%{opacity:0}to{opacity:1}}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/u-verification-code.e967c1e9.css:
--------------------------------------------------------------------------------
1 | .u-code-wrap[data-v-1cef9d0f]{width:0;height:0;position:fixed;z-index:-1}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/user.4b21793f.css:
--------------------------------------------------------------------------------
1 | .user-info[data-v-0f3174a2]{background:url(/static/images/user/my_topbg.png);height:115px;background-position:bottom;background-size:100% auto}
2 |
--------------------------------------------------------------------------------
/public/mobile/assets/user_set.e61ca628.css:
--------------------------------------------------------------------------------
1 | .u-tips[data-v-72a4be36]{font-size:.8125rem;text-align:center;padding:1.0625rem 0;line-height:1.5;color:#999}.u-action-sheet-item[data-v-72a4be36]{display:flex;flex-direction:row;line-height:1;justify-content:center;align-items:center;font-size:1rem;padding:1.0625rem 0;flex-direction:column}.u-action-sheet-item__subtext[data-v-72a4be36]{font-size:.75rem;color:#999;margin-top:.625rem}.u-gab[data-v-72a4be36]{height:.375rem;background-color:#eaeaec}.u-actionsheet-cancel[data-v-72a4be36]{color:#333}.user-set .item[data-v-8f36ed3e]{padding:.9375rem}.user-set .btn-border[data-v-8f36ed3e]{border-bottom:.0625rem solid #f8f8f8}
2 |
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_code.png
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_mobile.png
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_password.png
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_user.png
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_visit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_visit.png
--------------------------------------------------------------------------------
/public/mobile/static/images/icon/icon_wx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/icon/icon_wx.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/home.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/home_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/home_s.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/news.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/news_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/news_s.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/user.png
--------------------------------------------------------------------------------
/public/mobile/static/images/tabs/user_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/tabs/user_s.png
--------------------------------------------------------------------------------
/public/mobile/static/images/user/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/user/default_avatar.png
--------------------------------------------------------------------------------
/public/mobile/static/images/user/my_topbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/mobile/static/images/user/my_topbg.png
--------------------------------------------------------------------------------
/public/uploads/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/public/uploads/index.html
--------------------------------------------------------------------------------
/server/.example.env:
--------------------------------------------------------------------------------
1 | # 数据库
DATABASE_URL='mysql+pymysql://account:password@127.0.0.1:3306/name?charset=utf8mb4'
# 上传目录
UPLOAD_DIRECTORY='../public/uploads/'
# REDIS
REDIS_URL='redis://:password@127.0.0.1:6379/0'
# 服务端资源文件
DOMAIN='https://127.0.0.1:80'
--------------------------------------------------------------------------------
/server/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/__init__.py
--------------------------------------------------------------------------------
/server/asgi.py:
--------------------------------------------------------------------------------
1 | from like.app import create_app
2 |
3 | # 容器运行入口
4 | app = create_app()
5 |
6 | if __name__ == '__main__':
7 | import uvicorn
8 |
9 | uvicorn.run(app, host='0.0.0.0', port=8000)
10 |
--------------------------------------------------------------------------------
/server/asgi_front.py:
--------------------------------------------------------------------------------
1 | from like.app import create_front
2 |
3 | # 容器运行入口
4 | app = create_front()
5 |
6 | if __name__ == '__main__':
7 | import uvicorn
8 |
9 | uvicorn.run(app, host='0.0.0.0', port=8002)
10 |
--------------------------------------------------------------------------------
/server/cli/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/cli/__init__.py
--------------------------------------------------------------------------------
/server/cli/db_helper.py:
--------------------------------------------------------------------------------
1 | import typer
2 | from sqlalchemy import create_engine
3 |
4 | from env import build_env
5 |
6 | build_env(__file__)
7 |
8 |
9 | def create_all_tables():
10 | from like.config import get_settings
11 | from like.models.base import Base
12 | Base.metadata.create_all(bind=create_engine(get_settings().database_url))
13 |
14 |
15 | if __name__ == '__main__':
16 | typer.run(create_all_tables)
17 |
--------------------------------------------------------------------------------
/server/cli/env.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from os import path
3 | from dotenv import load_dotenv
4 |
5 |
6 | def build_env(cur_path: str):
7 | root_path = path.abspath(path.join(cur_path, '../..'))
8 | sys.path.append(root_path)
9 | load_dotenv(dotenv_path=path.join(root_path, '.env'))
10 | load_dotenv(dotenv_path=path.join(root_path, '.env.prod'))
11 |
--------------------------------------------------------------------------------
/server/like/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/routers/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/routers/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/schemas/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/schemas/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/article/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/article/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/channel/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/channel/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/common/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/common/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/decorate/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/decorate/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/setting/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/setting/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/system/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/system/__init__.py
--------------------------------------------------------------------------------
/server/like/admin/service/user/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/admin/service/user/__init__.py
--------------------------------------------------------------------------------
/server/like/dependencies/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/dependencies/__init__.py
--------------------------------------------------------------------------------
/server/like/dependencies/database.py:
--------------------------------------------------------------------------------
1 | from databases import Database
2 |
3 | from ..config import get_settings
4 |
5 | __all__ = ['db']
6 |
7 | # 数据库实例
8 | db: Database = Database(
9 | get_settings().database_url,
10 | min_size=get_settings().database_pool_min_size,
11 | max_size=get_settings().database_pool_max_size,
12 | pool_recycle=get_settings().database_pool_recycle)
13 |
--------------------------------------------------------------------------------
/server/like/exceptions/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/exceptions/__init__.py
--------------------------------------------------------------------------------
/server/like/front/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/front/__init__.py
--------------------------------------------------------------------------------
/server/like/front/routers/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/front/routers/__init__.py
--------------------------------------------------------------------------------
/server/like/front/routers/sms.py:
--------------------------------------------------------------------------------
1 | """
2 | 短信发送
3 | """
4 |
5 | from fastapi import APIRouter, Depends
6 |
7 | from like.front.schemas.sms import SmsSendIn
8 | from like.front.service.sms import ISmsSendService, SmsSendService
9 | from like.http_base import unified_resp
10 |
11 | router = APIRouter(prefix='/sms')
12 |
13 |
14 | @router.post('/send')
15 | @unified_resp
16 | async def sms_send(sms_in: SmsSendIn, sms_service: ISmsSendService = Depends(SmsSendService)):
17 | """
18 | pass
19 | :param file_in:
20 | :return:
21 | """
22 | return await sms_service.send(sms_in)
23 |
--------------------------------------------------------------------------------
/server/like/front/routers/upload.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from fastapi import APIRouter, UploadFile, Form
4 |
5 | from like.http_base import unified_resp
6 | from like.plugins.storage.storage_driver import StorageDriver
7 |
8 | router = APIRouter(prefix='/upload')
9 |
10 |
11 | @router.post('/image')
12 | @unified_resp
13 | async def upload_image(file: UploadFile, dir: str = Form(default='')):
14 | """上传图片"""
15 | folder = 'image'
16 | if dir:
17 | folder = os.path.join(folder, dir)
18 | res = await StorageDriver.upload(file, folder, 10)
19 | return res
20 |
--------------------------------------------------------------------------------
/server/like/front/schemas/sms.py:
--------------------------------------------------------------------------------
1 | from fastapi import Query
2 | from pydantic import BaseModel
3 |
4 |
5 | class SmsSendIn(BaseModel):
6 | """
7 | 短信发送 入参
8 | """
9 | scene: int # 场景 [101=登录验证码, 102=绑定手机验证码, 103=变更手机验证码, 104=找回登录密码验证码]
10 | mobile: str = Query(max_length=11, min_length=11, regex="^[1][3,4,5,6,7,8,9][0-9]{9}$")
11 |
--------------------------------------------------------------------------------
/server/like/front/service/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/front/service/__init__.py
--------------------------------------------------------------------------------
/server/like/generator/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/generator/__init__.py
--------------------------------------------------------------------------------
/server/like/generator/config.py:
--------------------------------------------------------------------------------
1 | from typing_extensions import Final
2 |
3 |
4 | class GenConfig:
5 | """代码生成器公共配置"""
6 |
7 | # 基础包名
8 | package_name: Final[str] = 'like'
9 | # 后台包名
10 | admin_package: Final[str] = 'like.admin'
11 | # 实体包名
12 | models_package: Final[str] = 'like.models'
13 | # 是否去除表前缀
14 | is_remove_table_prefix: Final[bool] = True
15 | # 生成代码根路径
16 | gen_root_path: Final[str] = 'target'
17 |
--------------------------------------------------------------------------------
/server/like/generator/routers/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/generator/routers/__init__.py
--------------------------------------------------------------------------------
/server/like/generator/schemas/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/generator/schemas/__init__.py
--------------------------------------------------------------------------------
/server/like/generator/service/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/generator/service/__init__.py
--------------------------------------------------------------------------------
/server/like/generator/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/generator/utils/__init__.py
--------------------------------------------------------------------------------
/server/like/models/__init__.py:
--------------------------------------------------------------------------------
1 | from .user import *
2 | from .setting import *
3 | from .system import *
4 | from .common import *
5 | from .gen import *
6 | from .reply import *
7 | from .notice import *
8 | from .article import *
9 |
--------------------------------------------------------------------------------
/server/like/models/base.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy.ext.declarative import declarative_base
2 | from sqlalchemy import Column, text
3 | from sqlalchemy.dialects.mysql import INTEGER
4 |
5 | __all__ = ['Base', 'TimestampMixin']
6 |
7 | # 数据库模型基类
8 | Base = declarative_base()
9 |
10 |
11 | class TimestampMixin:
12 | create_time = Column(INTEGER(10, unsigned=True), nullable=False, server_default=text('0'), comment='创建时间')
13 | update_time = Column(INTEGER(10, unsigned=True), nullable=False, server_default=text('0'), comment='更新时间')
14 | delete_time = Column(INTEGER(10, unsigned=True), nullable=False, server_default=text('0'), comment='删除时间')
15 |
--------------------------------------------------------------------------------
/server/like/plugins/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/__init__.py
--------------------------------------------------------------------------------
/server/like/plugins/notice/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/notice/__init__.py
--------------------------------------------------------------------------------
/server/like/plugins/notice/template/sms_template.py:
--------------------------------------------------------------------------------
1 | from like.utils.tools import ToolsUtil
2 |
3 |
4 | class SmsTemplate(object):
5 |
6 | def __init__(self, sms_type, sms_notice):
7 | self.sms_type = sms_type
8 | config = ToolsUtil.json_to_map(sms_notice)
9 | self.template_id = config.get("template_id", "")
10 | self.content = config.get("content", "")
11 | self.status = int(config.get("status", 0))
12 |
--------------------------------------------------------------------------------
/server/like/plugins/sms/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/sms/__init__.py
--------------------------------------------------------------------------------
/server/like/plugins/sms/engine/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/sms/engine/__init__.py
--------------------------------------------------------------------------------
/server/like/plugins/sms/engine/sms_base.py:
--------------------------------------------------------------------------------
1 | from six import with_metaclass
2 |
3 | from like.utils.singleton_abstract_class_utils import AbstractFactoryClass
4 |
5 |
6 | class SmsBase(with_metaclass(AbstractFactoryClass)):
7 | """
8 | SMS 抽象工厂类
9 | """
10 | engine = ''
11 |
12 | def send(self, **kwargs):
13 | raise NotImplementedError
14 |
15 | def get_status(self):
16 | raise NotImplementedError
17 |
18 | @classmethod
19 | def init(cls):
20 | from like.plugins.sms.engine.aliyun_sms import AliyunSms
21 | from like.plugins.sms.engine.tencent_sms import TencentSms
22 | _ = AliyunSms, TencentSms
23 | for sub_class in cls.__subclasses__():
24 | SmsBase.register(sub_class.engine, sub_class)
25 |
--------------------------------------------------------------------------------
/server/like/plugins/storage/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/storage/__init__.py
--------------------------------------------------------------------------------
/server/like/plugins/storage/engine/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/plugins/storage/engine/__init__.py
--------------------------------------------------------------------------------
/server/like/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/like/utils/__init__.py
--------------------------------------------------------------------------------
/server/like/utils/ip.py:
--------------------------------------------------------------------------------
1 | import logging
2 | import socket
3 |
4 | logger = logging.getLogger(__name__)
5 |
6 |
7 | class IpUtil:
8 | """IP工具类"""
9 |
10 | @staticmethod
11 | def get_host_name() -> str:
12 | """获取本地IP地址"""
13 | return socket.gethostname()
14 |
15 | @staticmethod
16 | def get_host_ip() -> str:
17 | """获取本地主机名"""
18 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
19 | try:
20 | s.connect(('10.0.0.0', 0))
21 | ip = s.getsockname()[0]
22 | except Exception as _:
23 | ip = '127.0.0.1'
24 | finally:
25 | s.close()
26 | return ip
27 |
--------------------------------------------------------------------------------
/server/like/utils/string.py:
--------------------------------------------------------------------------------
1 | import re
2 |
3 |
4 | class StringUtil:
5 | """字符串工具类"""
6 | to_snake_pattern = re.compile(r'(? str:
10 | """驼峰命名转蛇形命名"""
11 | return cls.to_snake_pattern.sub('_', name).lower()
12 |
13 | @classmethod
14 | def to_camel_case(cls, name: str, is_upper=True) -> str:
15 | """蛇形命名转驼峰命名
16 | is_upper: 为True则首字母大写, 否则首字母小写
17 | """
18 | if not name:
19 | return name
20 | res = ''.join(word.title() for word in name.split('_'))
21 | if not is_upper:
22 | res = f'{res[0].lower()}{res[1:]}'
23 | return res
24 |
--------------------------------------------------------------------------------
/server/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/migrations/__init__.py
--------------------------------------------------------------------------------
/server/run_admin.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # 运行服务
4 | python3 -m uvicorn asgi:app --port 8000 --reload
5 |
--------------------------------------------------------------------------------
/server/run_front.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # 运行服务
4 | python3 -m uvicorn asgi-front:app --port 8002 --reload
5 |
--------------------------------------------------------------------------------
/server/static/ad01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/ad01.jpg
--------------------------------------------------------------------------------
/server/static/article01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/article01.png
--------------------------------------------------------------------------------
/server/static/article02.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/article02.jpeg
--------------------------------------------------------------------------------
/server/static/article03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/article03.png
--------------------------------------------------------------------------------
/server/static/backend_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/backend_avatar.png
--------------------------------------------------------------------------------
/server/static/backend_backdrop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/backend_backdrop.png
--------------------------------------------------------------------------------
/server/static/backend_favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/backend_favicon.ico
--------------------------------------------------------------------------------
/server/static/backend_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/backend_logo.png
--------------------------------------------------------------------------------
/server/static/banner01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/banner01.png
--------------------------------------------------------------------------------
/server/static/banner02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/banner02.png
--------------------------------------------------------------------------------
/server/static/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/default_avatar.png
--------------------------------------------------------------------------------
/server/static/nav01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/nav01.png
--------------------------------------------------------------------------------
/server/static/nav02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/nav02.png
--------------------------------------------------------------------------------
/server/static/nav03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/nav03.png
--------------------------------------------------------------------------------
/server/static/nav04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/nav04.png
--------------------------------------------------------------------------------
/server/static/nav05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/nav05.png
--------------------------------------------------------------------------------
/server/static/pc_favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/pc_favicon.ico
--------------------------------------------------------------------------------
/server/static/pc_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/pc_logo.png
--------------------------------------------------------------------------------
/server/static/shop_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/shop_logo.png
--------------------------------------------------------------------------------
/server/static/tabbar_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_home.png
--------------------------------------------------------------------------------
/server/static/tabbar_home_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_home_sel.png
--------------------------------------------------------------------------------
/server/static/tabbar_me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_me.png
--------------------------------------------------------------------------------
/server/static/tabbar_me_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_me_sel.png
--------------------------------------------------------------------------------
/server/static/tabbar_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_text.png
--------------------------------------------------------------------------------
/server/static/tabbar_text_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/tabbar_text_sel.png
--------------------------------------------------------------------------------
/server/static/user_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/user_about.png
--------------------------------------------------------------------------------
/server/static/user_collect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/user_collect.png
--------------------------------------------------------------------------------
/server/static/user_kefu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/user_kefu.png
--------------------------------------------------------------------------------
/server/static/user_setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/static/user_setting.png
--------------------------------------------------------------------------------
/server/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/server/tests/__init__.py
--------------------------------------------------------------------------------
/uniapp/.env.development.example:
--------------------------------------------------------------------------------
1 |
2 | # 请求域名
3 | VITE_APP_BASE_URL=''
--------------------------------------------------------------------------------
/uniapp/.env.production.example:
--------------------------------------------------------------------------------
1 |
2 | # 请求域名
3 | VITE_APP_BASE_URL='https://python-front.likeadmin.cn'
--------------------------------------------------------------------------------
/uniapp/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 |
18 | /cypress/videos/
19 | /cypress/screenshots/
20 |
21 | # Editor directories and files
22 | .idea
23 | *.suo
24 | *.ntvs*
25 | *.njsproj
26 | *.sln
27 | *.sw?
28 | .hbuilderx
29 | # .env
30 | .env.development
31 | .env.production
32 |
--------------------------------------------------------------------------------
/uniapp/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/uniapp/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.detectIndentation": false,
3 | "editor.tabSize": 4,
4 | "editor.formatOnSave": true,
5 | "editor.codeActionsOnSave": {
6 | "source.fixAll.eslint": true
7 | },
8 | "css.validate": false,
9 | "less.validate": false,
10 | "scss.validate": false
11 | }
12 |
--------------------------------------------------------------------------------
/uniapp/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/uniapp/src/App.vue:
--------------------------------------------------------------------------------
1 |
20 |
23 |
--------------------------------------------------------------------------------
/uniapp/src/api/app.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | //发送短信
4 | export function smsSend(data: any) {
5 | return request.post({ url: '/sms/send', data: data })
6 | }
7 |
8 | export function getConfig() {
9 | return request.get({ url: '/config' })
10 | }
11 |
12 | export function getPolicy(data: any) {
13 | return request.get({ url: '/policy', data: data })
14 | }
15 |
--------------------------------------------------------------------------------
/uniapp/src/api/shop.ts:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | //首页数据
4 | export function getIndex() {
5 | return request.get({ url: '/index' })
6 | }
7 |
8 | // 装修页面
9 | export function getDecorate(data: any) {
10 | return request.get({ url: '/decorate', data })
11 | }
12 |
13 | /**
14 | * @description 热门搜索
15 | * @return { Promise }
16 | */
17 | export function getHotSearch() {
18 | return request.get({ url: '/hotSearch' })
19 | }
20 |
21 | /**
22 | * @description 搜索
23 | * @param { string } keyword 关键词
24 | * @return { Promise }
25 | */
26 | export function getSearch(data: { keyword: string; pageNo: number; pageSize: number }) {
27 | return request.get({ url: '/search', data })
28 | }
29 |
--------------------------------------------------------------------------------
/uniapp/src/components/app/app.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/components/app/app.vue
--------------------------------------------------------------------------------
/uniapp/src/components/widgets/search/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/uniapp/src/enums/agreementEnums.ts:
--------------------------------------------------------------------------------
1 | //菜单主题类型
2 | export enum AgreementEnum {
3 | PRIVACY = 'privacy',
4 | SERVICE = 'service'
5 | }
6 |
--------------------------------------------------------------------------------
/uniapp/src/enums/appEnums.ts:
--------------------------------------------------------------------------------
1 | //菜单主题类型
2 | export enum ThemeEnum {
3 | LIGHT = 'light',
4 | DARK = 'dark'
5 | }
6 |
7 | // 客户端
8 | export enum ClientEnum {
9 | MP_WEIXIN = 1, // 微信-小程序
10 | OA_WEIXIN = 2, // 微信-公众号
11 | H5 = 3, // H5
12 | IOS = 5, //苹果
13 | ANDROID = 6 //安卓
14 | }
15 |
16 | export enum SMSEnum {
17 | LOGIN = 101,
18 | BIND_MOBILE = 102,
19 | CHANGE_MOBILE = 103,
20 | FIND_PASSWORD = 104
21 | }
22 |
23 | export enum SearchTypeEnum {
24 | HISTORY = 'history'
25 | }
26 |
27 | // 用户资料
28 | export enum FieldType {
29 | NONE = '',
30 | AVATAR = 'avatar',
31 | USERNAME = 'username',
32 | NICKNAME = 'nickname',
33 | SEX = 'sex'
34 | }
35 |
--------------------------------------------------------------------------------
/uniapp/src/enums/cacheEnums.ts:
--------------------------------------------------------------------------------
1 | // 本地缓冲key
2 |
3 | //token
4 | export const TOKEN_KEY = 'token'
5 |
6 | // 搜索历史记录
7 | export const HISTORY = 'history'
8 |
9 | export const BACK_URL = 'back_url'
10 |
--------------------------------------------------------------------------------
/uniapp/src/hooks/useCopy.ts:
--------------------------------------------------------------------------------
1 | export function useCopy() {
2 | const copy = (text: string) => {
3 | uni.setClipboardData({
4 | data: String(text)
5 | })
6 | }
7 | return {
8 | copy
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/uniapp/src/hooks/useLockFn.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export function useLockFn(fn: (...args: any[]) => Promise) {
4 | const isLock = ref(false)
5 | const lockFn = async (...args: any[]) => {
6 | if (isLock.value) return
7 | isLock.value = true
8 | try {
9 | const res = await fn(...args)
10 | isLock.value = false
11 | return res
12 | } catch (e) {
13 | isLock.value = false
14 | throw e
15 | }
16 | }
17 | return {
18 | isLock,
19 | lockFn
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/uniapp/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createSSRApp } from 'vue'
2 | import App from './App.vue'
3 | import plugins from './plugins'
4 | import { setupRouter } from './router'
5 | import './styles/index.scss'
6 | export function createApp() {
7 | const app = createSSRApp(App)
8 |
9 | Promise.resolve().then(() => {
10 | setupRouter()
11 | })
12 | app.use(plugins)
13 | return {
14 | app
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/uniapp/src/pages/as_us/as_us.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 当前版本{{ appStore.config.version }}
5 |
6 |
7 |
8 |
12 |
13 |
23 |
--------------------------------------------------------------------------------
/uniapp/src/pages/empty/empty.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/uniapp/src/pages/webview/webview.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/uniapp/src/plugins/index.ts:
--------------------------------------------------------------------------------
1 | import { isFunction } from '@vue/shared'
2 | import { App } from 'vue'
3 | const modules = import.meta.globEager('./modules/**/*.ts')
4 |
5 | export default {
6 | install: (app: App) => {
7 | for (const module of Object.values(modules)) {
8 | const fun = module.default
9 | isFunction(fun) && fun(app)
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/uniapp/src/plugins/modules/pinia.ts:
--------------------------------------------------------------------------------
1 | import { App } from 'vue'
2 | import { createPinia } from 'pinia'
3 | const pinia = createPinia()
4 | export default (app: App) => {
5 | app.use(pinia)
6 | }
7 |
--------------------------------------------------------------------------------
/uniapp/src/plugins/modules/uview.ts:
--------------------------------------------------------------------------------
1 | import { App } from 'vue'
2 | import uView from '@/uni_modules/vk-uview-ui'
3 |
4 | export default (app: App) => {
5 | // 使用 uView UI
6 | app.use(uView)
7 | }
8 |
--------------------------------------------------------------------------------
/uniapp/src/plugins/modules/vconsole.ts:
--------------------------------------------------------------------------------
1 | // #ifdef H5
2 | // 提交前需要注释 本地调试使用
3 | import Vconsole from 'vconsole'
4 | import { isDevMode } from '@/utils/env'
5 | // #endif
6 |
7 | export default () => {
8 | // #ifdef H5
9 | if (isDevMode()) {
10 | const vConsole = new Vconsole()
11 | return vConsole
12 | }
13 | // #endif
14 | }
15 |
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_code.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_mobile.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_password.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_user.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_visit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_visit.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/icon/icon_wx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/icon/icon_wx.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/home.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/home_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/home_s.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/news.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/news_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/news_s.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/user.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/tabs/user_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/tabs/user_s.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/user/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/user/default_avatar.png
--------------------------------------------------------------------------------
/uniapp/src/static/images/user/my_topbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/static/images/user/my_topbg.png
--------------------------------------------------------------------------------
/uniapp/src/styles/index.scss:
--------------------------------------------------------------------------------
1 | @import './tailwind.css';
2 | @import './public.scss';
3 | @import '../uni_modules/vk-uview-ui/index.scss';
4 |
--------------------------------------------------------------------------------
/uniapp/src/styles/public.scss:
--------------------------------------------------------------------------------
1 | page {
2 | background-color: $u-bg-color;
3 | font-size: 28rpx;
4 | }
5 |
--------------------------------------------------------------------------------
/uniapp/src/styles/tailwind.css:
--------------------------------------------------------------------------------
1 | /* #ifdef H5 */
2 | @tailwind base;
3 | /* #endif */
4 |
5 | @tailwind utilities;
6 |
--------------------------------------------------------------------------------
/uniapp/src/styles/var.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/likeadmin-likeshop/likeadmin_python/0f487c83376e82d52dcea9aa64290355451c1272/uniapp/src/styles/var.css
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/components/u-loading-page/u-loading-page.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
22 |
23 |
26 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/components/u-tr/u-tr.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
19 |
26 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/components/vk-uview-ui/vk-uview-ui.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
16 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/index.scss:
--------------------------------------------------------------------------------
1 | // 引入公共基础类
2 | @import "./libs/css/common.scss";
3 | @import "./libs/css/color.scss";
4 |
5 | // 非nvue的样式
6 | /* #ifndef APP-NVUE */
7 | @import "./libs/css/style.vue.scss";
8 | /* #endif */
9 |
10 | // nvue的特有样式
11 | /* #ifdef APP-NVUE */
12 | @import "./libs/css/style.nvue.scss";
13 | /* #endif */
14 |
15 | // 小程序特有的样式
16 | /* #ifdef MP */
17 | @import "./libs/css/style.mp.scss";
18 | /* #endif */
19 |
20 | // H5特有的样式
21 | /* #ifdef H5 */
22 | @import "./libs/css/style.h5.scss";
23 | /* #endif */
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/config/config.js:
--------------------------------------------------------------------------------
1 | // 第一版 1.10.1 版本发布于2021-11-18
2 | let version = '1.10.1';
3 |
4 | export default {
5 | v: version,
6 | version: version,
7 | // 主题名称
8 | type: [
9 | 'primary',
10 | 'success',
11 | 'info',
12 | 'error',
13 | 'warning'
14 | ]
15 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/config/zIndex.js:
--------------------------------------------------------------------------------
1 | // uniapp在H5中各API的z-index值如下:
2 | /**
3 | * actionsheet: 999
4 | * modal: 999
5 | * navigate: 998
6 | * tabbar: 998
7 | * toast: 999
8 | */
9 |
10 | export default {
11 | toast: 10090,
12 | noNetwork: 10080,
13 | // popup包含popup,actionsheet,keyboard,picker的值
14 | popup: 10075,
15 | mask: 10070,
16 | navbar: 980,
17 | topTips: 975,
18 | sticky: 970,
19 | indexListSticky: 965,
20 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/css/style.components.scss:
--------------------------------------------------------------------------------
1 | // 定义混入指令,用于在非nvue环境下的flex定义,因为nvue没有display属性,会报错
2 | @mixin vue-flex($direction: row) {
3 | /* #ifndef APP-NVUE */
4 | display: flex;
5 | flex-direction: $direction;
6 | /* #endif */
7 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/css/style.h5.scss:
--------------------------------------------------------------------------------
1 | /* H5的时候,隐藏滚动条 */
2 | ::-webkit-scrollbar {
3 | display: none;
4 | width: 0 !important;
5 | height: 0 !important;
6 | -webkit-appearance: none;
7 | background: transparent;
8 | }
9 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/css/style.nvue.scss:
--------------------------------------------------------------------------------
1 | .nvue {
2 | font-size: 24rpx;
3 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/$parent.js:
--------------------------------------------------------------------------------
1 | // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
2 | // this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
3 | // 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
4 | // 值(默认为undefined),就是查找最顶层的$parent
5 | export default function $parent(name = undefined) {
6 | let parent = this.$parent;
7 | // 通过while历遍,这里主要是为了H5需要多层解析的问题
8 | while (parent) {
9 | // 父组件
10 | if (parent.$options && parent.$options.name !== name) {
11 | // 如果组件的name不相等,继续上一级寻找
12 | parent = parent.$parent;
13 | } else {
14 | return parent;
15 | }
16 | }
17 | return false;
18 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/addUnit.js:
--------------------------------------------------------------------------------
1 | import validation from './test.js';
2 |
3 | // 添加单位,如果有rpx,%,px等单位结尾或者值为auto,直接返回,否则加上rpx单位结尾
4 | export default function addUnit(value = 'auto', unit = 'rpx') {
5 | value = String(value);
6 | // 用uView内置验证规则中的number判断是否为数值
7 | return validation.number(value) ? `${value}${unit}` : value;
8 | }
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/bem.js:
--------------------------------------------------------------------------------
1 | function bem(name, conf) {
2 |
3 | }
4 | export default { bem }
5 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/deepClone.js:
--------------------------------------------------------------------------------
1 | // 判断arr是否为一个数组,返回一个bool值
2 | function isArray (arr) {
3 | return Object.prototype.toString.call(arr) === '[object Array]';
4 | }
5 |
6 | // 深度克隆
7 | function deepClone (obj) {
8 | // 对常见的“非”值,直接返回原来值
9 | if([null, undefined, NaN, false].includes(obj)) return obj;
10 | if(typeof obj !== "object" && typeof obj !== 'function') {
11 | //原始类型直接返回
12 | return obj;
13 | }
14 | var o = isArray(obj) ? [] : {};
15 | for(let i in obj) {
16 | if(obj.hasOwnProperty(i)){
17 | o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
18 | }
19 | }
20 | return o;
21 | }
22 |
23 | export default deepClone;
24 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/random.js:
--------------------------------------------------------------------------------
1 | function random(min, max) {
2 | if (min >= 0 && max > 0 && max >= min) {
3 | let gab = max - min + 1;
4 | return Math.floor(Math.random() * gab + min);
5 | } else {
6 | return 0;
7 | }
8 | }
9 |
10 | export default random;
11 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/randomArray.js:
--------------------------------------------------------------------------------
1 | // 打乱数组
2 | function randomArray(array = []) {
3 | // 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0
4 | return array.sort(() => Math.random() - 0.5);
5 | }
6 |
7 | export default randomArray
8 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/sys.js:
--------------------------------------------------------------------------------
1 | export function os() {
2 | return uni.getSystemInfoSync().platform;
3 | };
4 |
5 | export function sys() {
6 | return uni.getSystemInfoSync();
7 | }
8 |
9 |
10 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/toast.js:
--------------------------------------------------------------------------------
1 | function toast(title, duration = 1500) {
2 | uni.showToast({
3 | title: title,
4 | icon: 'none',
5 | duration: duration
6 | })
7 | }
8 |
9 | export default toast
10 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/function/trim.js:
--------------------------------------------------------------------------------
1 | function trim(str, pos = 'both') {
2 | if (pos == 'both') {
3 | return str.replace(/^\s+|\s+$/g, "");
4 | } else if (pos == "left") {
5 | return str.replace(/^\s*/, '');
6 | } else if (pos == 'right') {
7 | return str.replace(/(\s*$)/g, "");
8 | } else if (pos == 'all') {
9 | return str.replace(/\s+/g, "");
10 | } else {
11 | return str;
12 | }
13 | }
14 |
15 | export default trim
16 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/mixin/mpShare.js:
--------------------------------------------------------------------------------
1 | export default {
2 | onLoad() {
3 | // 设置默认的转发参数
4 | this.$u.mpShare = {
5 | title: '', // 默认为小程序名称
6 | path: '', // 默认为当前页面路径
7 | imageUrl: '' // 默认为当前页面的截图
8 | }
9 | },
10 | onShareAppMessage() {
11 | return this.$u.mpShare
12 | },
13 | // #ifdef MP-WEIXIN
14 | onShareTimeline() {
15 | return this.$u.mpShare
16 | }
17 | // #endif
18 | }
19 |
--------------------------------------------------------------------------------
/uniapp/src/uni_modules/vk-uview-ui/libs/store/index.js:
--------------------------------------------------------------------------------
1 | // 暂时不用vuex模块方式实现,将该方法直接放入到/store/index.js中
2 | const module = {
3 | actions: {
4 | $uStore({rootState}, params) {
5 | let nameArr = params.name.split('.');
6 | if(nameArr.length >= 2) {
7 | let obj = rootState[nameArr[0]];
8 | for(let i = 1; i < nameArr.length - 1; i ++) {
9 | obj = obj[nameArr[i]];
10 | }
11 | obj[nameArr[nameArr.length - 1]] = params.value;
12 | } else {
13 | rootState[params.name] = params.value;
14 | }
15 | }
16 | }
17 | }
18 |
19 | export default module
--------------------------------------------------------------------------------
/uniapp/src/utils/auth.ts:
--------------------------------------------------------------------------------
1 | import { TOKEN_KEY } from '@/enums/cacheEnums'
2 | import cache from './cache'
3 |
4 | export function getToken() {
5 | return cache.get(TOKEN_KEY)
6 | }
7 |
--------------------------------------------------------------------------------
/uniapp/src/utils/env.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @description: 开发模式
3 | */
4 | export function isDevMode(): boolean {
5 | return import.meta.env.DEV
6 | }
7 |
8 | /**
9 | * @description: 生成模式
10 | */
11 | export function isProdMode(): boolean {
12 | return import.meta.env.PROD
13 | }
14 |
--------------------------------------------------------------------------------
/uniapp/src/utils/file.ts:
--------------------------------------------------------------------------------
1 | export async function saveImageToPhotosAlbum(url: string) {
2 | if (!url) return uni.$u.toast('图片错误')
3 | //#ifdef H5
4 | uni.$u.toast('长按图片保存')
5 | //#endif
6 | //#ifndef H5
7 | try {
8 | const res: any = await uni.downloadFile({ url, timeout: 10000 })
9 | await uni.saveImageToPhotosAlbum({
10 | filePath: res.tempFilePath
11 | })
12 | uni.showToast({
13 | title: '保存成功',
14 | icon: 'success'
15 | })
16 | } catch (error: any) {
17 | uni.$u.toast(error.errMsg || '保存失败')
18 | }
19 | //#endif
20 | }
21 |
--------------------------------------------------------------------------------
/uniapp/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "useDefineForClassFields": true,
5 | "module": "esnext",
6 | "moduleResolution": "node",
7 | "strict": true,
8 | "jsx": "preserve",
9 | "sourceMap": true,
10 | "resolveJsonModule": true,
11 | "esModuleInterop": true,
12 | "lib": ["esnext", "dom"],
13 | "types": ["@dcloudio/types"],
14 | "isolatedModules": true,
15 | "baseUrl": ".",
16 | "paths": {
17 | "@/*": ["./src/*"]
18 | }
19 | },
20 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "typings/**/*.d.ts"]
21 | }
22 |
--------------------------------------------------------------------------------
/uniapp/typings/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare module '*.vue' {
4 | import { DefineComponent } from 'vue'
5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
6 | const component: DefineComponent<{}, {}, any>
7 | export default component
8 | }
9 |
10 | declare interface Window {
11 | signLink: string
12 | }
13 |
14 | declare module 'uview-plus'
15 | declare module 'weixin-js-sdk'
16 |
--------------------------------------------------------------------------------
/uniapp/typings/uni.d.ts:
--------------------------------------------------------------------------------
1 | interface Uni {
2 | $u: any
3 | }
4 |
--------------------------------------------------------------------------------