基于AdonisJs+Adminify的NodeJs+Vue后臺(tái)管理系統(tǒng) - Adonis Admin

https://github.com/adonis-china/adonis-admin

Adonis Admin (Nodejs + Vue Admin dashboard)

An admin dashboard application based on AdonisJs and Adminify(based on Vuetify), see more at Adonis China.
Keywords: NodeJs, VueJs, AdonisJs, ORM, Relation, SQLite, MySQL, Middleware, Restful, CRUD, Material design

Getting Start

Server Side

  1. git clone https://github.com/adonis-china/adonis-admin.git
  2. cd adonis-admin && npm install && npm run serve:dev start the api server
  3. ./ace migration:refresh --seed fill database (use node ace on windows)

Client Side

  1. cd adminify && cp src/config.sample.js src/config.js use copy on windows
  2. npm install && npm run dev start the client
  3. Open http://localhost:8080 (or another port) in your browser.

use cnpm instead npm in china

UI Screenshots

1.png
2.png
3.png
4.png
5.png
6.png
7.png

Wrokflow - Add CRUD for a resource

  • ./ace make:model -m Page, Create Page Model with migration for Pages management.
  • Open /database/migrations/1496388160682_create_page_table.js, add some fields:
    table.increments()
    table.integer('type_id').unsigned().nullable()
    table.foreign('type_id').references('types.id')
    table.string('title').notNullable()
    table.text('body')
    table.timestamps()
    
  • ./ace migration:run to create table
  • Open /app/Model/Page.js, add a belongsTo relation:
    class Page extends Lucid {
      type () {
        return this.belongsTo('App/Model/Type')
      }
    }
    
  • Copy /app/Http/Controllers/Admin/Api/EmptyController.js to PageController.js, and change to this:
'use strict'

const RestController = require('./RestController')
const Page = use('App/Model/Page')
const Type = use('App/Model/Type')

class PageController extends RestController {
  get resource() {
    return 'pages'
  }

  get expand() {
    return ['type']
  }


  * gridData() {
    //change the fields
    return {
      options: {
        sort: 'id', //or '-id' as desc
        create: true,
        update: true,
        delete: true
      },
      // filters: false,
      filters: {
        model: {
          title: '',
          created_at: ''
        },
        fields: {
          title: { label: 'Title' },
          created_at: { label: t('fields.Page.created_at'), Page: 'date' }
        },
        rules: {},

      },
      columns: [
        { text: t('fields.Page.id'), value: 'id' },
        { text: t('fields.Page.title'), value: 'title'}
        
      ]
    }
  }

  * formData (request, response) {

    let model = {
      title: '',
      type_id: null,
      body: '',
    }
    let id
    if (request) {
      id = request.input('id')
      if (id) {
        model = yield Page.query().where('id', id).first()
      }
    }

    let typeOptions = yield Type.query().select('id','name').fetch()
    for (let type of typeOptions) {
      type.text = type.name
      type.value = type.id
    }

    return {
      
      model: model,
      fields: {
        title: { label: 'Title', hint: 'Page Title', required: true},
        type_id: {
          label: 'Type', type: 'select', options: typeOptions, required: true,
        },
        body: { label: 'Body', type: 'html' ,required: false},
      },
      rules: model.rules,
      messages: model.messages
    }
  }

  
}

module.exports = PageController

  • add route in /app/Http/routes.js:26
  const resources = ['posts', 'users', 'types', 'comments', 'settings', 'pages']
  • add menu in /adminify/src/menu.js, then you can see it shows in left side menu
{ "href": "/crud/pages", "title": "Pages", "icon": "view_list" },
  • Navigate to http://localhost:8080/#/crud/pages you get a grid list view of all pages.
  • Press plus button to add a page, also you can edit it after added.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末溢谤,一起剝皮案震驚了整個(gè)濱河市誉察,隨后出現(xiàn)的幾起案子映企,更是在濱河造成了極大的恐慌晤愧,老刑警劉巖凿宾,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屏镊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痰腮,“玉大人而芥,你說(shuō)我怎么就攤上這事“蛑担” “怎么了棍丐?”我有些...
    開(kāi)封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)虫腋。 經(jīng)常有香客問(wèn)我骄酗,道長(zhǎng)稀余,這世上最難降的妖魔是什么悦冀? 我笑而不...
    開(kāi)封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮睛琳,結(jié)果婚禮上盒蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己师骗,他們只是感情好历等,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著辟癌,像睡著了一般寒屯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黍少,一...
    開(kāi)封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天寡夹,我揣著相機(jī)與錄音,去河邊找鬼厂置。 笑死菩掏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昵济。 我是一名探鬼主播智绸,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼野揪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瞧栗?” 一聲冷哼從身側(cè)響起斯稳,我...
    開(kāi)封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迹恐,沒(méi)想到半個(gè)月后平挑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡系草,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年通熄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片找都。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唇辨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出能耻,到底是詐尸還是另有隱情赏枚,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布晓猛,位于F島的核電站饿幅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戒职。R本人自食惡果不足惜栗恩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洪燥。 院中可真熱鬧磕秤,春花似錦、人聲如沸捧韵。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)再来。三九已至蒙兰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芒篷,已是汗流浹背搜变。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梭伐,地道東北人痹雅。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像糊识,于是被迫代替她去往敵國(guó)和親绩社。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摔蓝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 回首頁(yè) 第一部分 Drupal簡(jiǎn)介 Drupal overview A tour of Drupal fundam...
    王乂閱讀 2,000評(píng)論 0 9
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,160評(píng)論 22 257
  • 表單在網(wǎng)頁(yè)中的作用不可小視愉耙,主要負(fù)責(zé)數(shù)據(jù)采集的功能贮尉,比如你可以采集訪問(wèn)者的名字和e-mail地址、調(diào)查表朴沿、留言簿等...
    安迪大叔閱讀 2,845評(píng)論 0 16
  • 文人有傲氣而無(wú)傲骨猜谚,書生有傲骨而無(wú)傲氣。所謂傲氣赌渣,傲的無(wú)非是背景魏铅、地位、頭銜坚芜。所謂傲骨览芳,傲的則是自己的風(fēng)骨,不合群...
    駱駝沒(méi)有刺閱讀 122評(píng)論 0 1
  • 今天的計(jì)劃是搭乘直升機(jī)降落去弗朗茲約瑟夫冰川徒步鸿竖,借助專業(yè)的冰爪沧竟,輕松行走在萬(wàn)年冰川之上,近距離接觸神奇的冰川世界...
    wimwim閱讀 212評(píng)論 0 0