| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- /* *********************************************************** */
- // 创建: Macheng 2019/09/05.
- // 修改: Macheng 2019/09/05
- // Description:
- // 该文件定义了任务类Task。用于执行任务数据。
- /* *********************************************************** */
- import { isString } from '@/utils'
- import Player from './player'
- import BaseModel from './baseModel'
- import Sheet from './sheet'
- class Task extends BaseModel {
- id = 0 // 任务ID (就是创建时间 ms)
- name = '' // 任务名称
- buildingId = 0 // 执行任务的建筑ID
- buildingName = '' // 执行任务的建筑名称
- floorId = 0 // 执行任务的层级ID
- floorName = '' // 执行任务的层级名称
- beginTime = 0 // 任务限定开始时间 (ms)
- endTime = 0 // 任务限定结束时间 (ms)
- status = 0 // 任务状态 0:未运行, 1:运行中, 2:已暂停, 3:已结束
- creator = null // 任务创建人
- executors = [] // 任务执行人
- sheets = [] // 任务权限
- desc = '' // 任务描述
- get label() {
- return this.name
- }
- get isTask() {
- return true
- }
- constructor(opts) {
- if (!opts) opts = {}
- super(opts)
- this.id = Math.floor(new Date().getTime() / 1000)
- this.init(opts)
- }
- cmpSame(dstTask) {
- if (this.beginTime !== dstTask.beginTime ||
- this.endTime !== dstTask.endTime ||
- this.status !== dstTask.status) {
- return false
- }
- if (this.executors.length !== dstTask.executors.length) {
- return false
- } else {
- for (let i = 0; i < this.executors.length; i++) {
- const srcPlayer = this.executors[i]
- const dstPlayer = dstTask.executors[i]
- if (srcPlayer.id !== dstPlayer.id || srcPlayer.name !== dstPlayer.name) {
- return false
- }
- }
- }
- return true
- }
- removeSheet(sheetId) {
- for (let i = this.sheets.length - 1; i >= 0; i--) {
- const sheet = this.sheets[i]
- if (sheet.id === sheetId) {
- this.sheets.splice(i, 1)
- }
- }
- }
- init(opts) {
- if (!opts) opts = {}
- super.init(opts)
- this.id = Number(opts['id']) || Number(opts['taskId']) || this.id
- this.name = opts['name'] || ''
- this.buildingId = Number(opts['buildingId']) || 0
- this.buildingName = opts['buildingName'] || ''
- this.floorId = Number(opts['floorId']) || 0
- this.floorName = opts['floorName'] || ''
- this.beginTime = Number(opts['beginTime']) || 0
- this.endTime = Number(opts['endTime']) || 0
- this.creator = null
- if (opts['creator']) {
- if (isString(opts['creator'])) {
- this.creator = new Player(JSON.parse(opts['creator']))
- } else {
- this.creator = new Player(opts['creator'])
- }
- }
- this.executors = []
- if (opts['executors']) {
- if (opts['executors'] instanceof Array) {
- for (let i = 0; i < opts['executors'].length; i++) {
- this.executors.push(new Player(opts['executors'][i]))
- }
- } else if (isString(opts['executors'])) {
- const arr = JSON.parse(opts['executors'])
- for (let i = 0; i < arr.length; i++) {
- const player = new Player(arr[i])
- this.executors.push(player)
- }
- }
- }
- this.sheets = []
- if (opts['sheets']) {
- if (opts['sheets'] instanceof Array) {
- for (let i = 0; i < opts['sheets'].length; i++) {
- const sheet = new Sheet(opts['sheets'][i])
- sheet.setTask(this)
- this.sheets.push(sheet)
- }
- } else if (isString(opts['sheets'])) {
- const arr = JSON.parse(opts['sheets'])
- for (let i = 0; i < arr.length; i++) {
- const sheet = new Sheet(arr[i])
- sheet.setTask(this)
- this.sheets.push(sheet)
- }
- }
- }
- this.desc = opts['desc'] || ''
- this.status = Number(opts['status']) || 0
- }
- setSheetInAtlasVisible(mode, visible) {
- for (const sheet of this.sheets) {
- if (Number(sheet.mode) === Number(mode)) {
- sheet.showInAtlas = visible
- }
- }
- }
- toJson() {
- const arrSheet = []
- for (const v of this.sheets) {
- arrSheet.push(v.toJson())
- }
- const arrExecutor = []
- for (const v of this.executors) {
- arrExecutor.push(v.toJson())
- }
- const obj1 = super.toJson()
- const obj2 = {
- id: this.id,
- name: this.name,
- buildingId: this.buildingId,
- buildingName: this.buildingName,
- floorId: this.floorId,
- floorName: this.floorName,
- beginTime: this.beginTime,
- endTime: this.endTime,
- creator: this.creator ? this.creator.toJson() : null,
- executors: arrExecutor,
- sheets: arrSheet,
- desc: this.desc,
- status: this.status
- }
- return Object.assign({}, obj1, obj2)
- }
- }
- export default Task
|