众包后台管理系统开发规范V1.0.0

众包后台管理系统开发规范

写在最前面

app是让用户用起来舒服,管理系统是让我们自己用起来舒服。app为提高用户体验而努力。管理系统也应为了提高工作人员的效率而进步。

工程结构

模块化

分清楚模块界限,建立不同的目录。基础框架上通用的不用看,咋们来看下,撸码的时候,咋们写的那些地方。

第一个目录,与服务器交互的地方。

src/api 根据业务命名、可以单独建立目录表示不同的业务模块。 比如 src/api/task/rule.js src/api/task/index.js

第二个目录,页面路由配置

目前是静态的,后续肯定是通过服务端控制权限,然后动态返回路由,做渲染。<br />目的前的静态管理<br />router<br />根据业务创建路由,然后放入router/routerCollection再也不用去index里面增加,路由爆炸式增长实在太恐怖!!!而且多人开发还容易冲突。

例子
image.png
image.png

cityRuleRouter.js

export const cityRuleRouter = [
  {
    path: '/city',
    name: 'City',
    component: () => import('@/views/city/index'),
    meta: {title: '城市列表'}
  }
];
function addCityRuleRouter(arr) {
  cityRuleRouter.forEach(value => arr.push(value));
}
export default addCityRuleRouter;

routerCollection.js

import addCityRuleRouter from '../router/cityRuleRouter'
//只需import自己定义好的路由,并加入下面的输入组即可。
let routers = [addCityRuleRouter];
export default function execute(router) {
  routers.forEach(callback => callback(router))
}

第三个目录views

根据不同的业务创建不同的目录模块。

分为三块

  • 视图层(xxx.vue)
  • 视图控制层(xxxController.vue)
  • 通用逻辑处理,通用变量层service层(xxxService.vue)

(如果一些,很多模块都可以通用的,就提到底层的目录)

举例

city/index视图层:index.vue

<script>
  import indexController from './indexController'
  export default indexController;
</script>

视图控制层indexController.js

import Pagination from '@/components/Pagination';
import CrowdsourceExport from '../../components/CrowdsourceExport';
import {queryCityList} from '@/api/city';
import {taskType, userCity} from "./indexServices";

export default {
  components: {Pagination, CrowdsourceExport},
  filters: {},
  data() {
    return {
      showExportDialog: true,
      list: null,
      cityOptions: userCity,
      conditionForm: {
        cityCode: ""
      },
      listLoading: true,
      childTaskTypeList: taskType,
      pageInfo: {
        list: []
      }
    }
  },
  created() {
    if (this.cityOptions && this.cityOptions.length !== 0) {
      this.conditionForm.cityCode = this.cityOptions[0].value;
    }
    this.query()
  },

  methods: {
    query() {
      queryCityList(this.conditionForm).then((res) => {
        this.pageInfo.list = res.result;
      }).catch(reason => {

      })
    },
    to(href, cityCode) {
      this.$router.push({
        path: href,
        query: {
          cityCode: cityCode,
        }
      })
    }
  }
}

通用逻辑处理,通用变量层serviceindexService.js

import {getUserCity} from "@/utils/commonOptions";

export const taskType = [
  {
    label: "清洁工单",
    value: "03-01",
    href: "/city/taskRule/clean"
  },
  {
    label: "超停调度工单",
    value: "02-03",
    href: "/city/taskRule/overDispatch"
  },
  {
    label: "指定调度工单",
    value: "02-01",
    href: "/city/taskRule/assignDispatch"
  },

];
export const userCity = getUserCity();

关于新增,详情,修改页面

简单事情,简单做。
一个页面就干一个事情,不要把,详情,编辑,新增,做成一个页面,然后再页面中根据不同的入参,来决定展示什么内容。因为,如果页面元素较多,或者有按钮需要做权限控制等,如果都使用的是一个页面,调试工作量巨大。实际话费时间远高于多做两个页面的时间花费。而且也“不模式”。

页面内容可以重复,Controller 可以大致相同,通用的逻辑可以放到Service中。

界面布局

统一,统一,统一

所有的组件都是size="mini" 每个页面都必须有标题。二级,或者三级页面必须标题和返回按钮。

列表页

标题,查询条件,按钮组,分割线,列表

按钮标识

新增type="success",编辑 type="primary" 详情 type="success" 删除 type="danger"
删除操作,如果很重要,一定要有提示,并再次确认的流程,防止误操作。

[图片上传失败...(image-5fbe7-1561957294776)]

基本布局结构如下


image.png
image.png

详情

如果产品没有特别要求布局,可以直接竖着排列。<br />
image.png
image.png

常规组件

组件化

既然是一个组件,那么久必须是通用,容易接入,入侵性小。 以导出组件为例 export-code 为导出配置编码。 param 为条件参数对象,且必须有一个showExportDialog(须通过这个字段来弹Dialog导出)

<CrowdsourceExport export-code="c5cd186a-fde3-4b08-a59a-3a595deb0a6f" :param="conditionForm"></CrowdsourceExport>
  import CrowdsourceExport from '../../../components/CrowdsourceExport';
image.png
image.png

写在最后

管理系统理应为提高使用者的工作效率而进化。

作者:GoFun成都技术中心-何刚

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345