├── src ├── static │ ├── logo.png │ ├── icons │ │ ├── close.png │ │ ├── more.png │ │ ├── share.png │ │ ├── user.png │ │ ├── write.png │ │ ├── finish.png │ │ ├── upload.png │ │ ├── enclosure.png │ │ ├── leftTime.png │ │ └── arrow-right.png │ └── img │ │ ├── setup.png │ │ └── background.jpg ├── sfc.d.ts ├── api │ ├── feedback.ts │ ├── wechat.ts │ ├── user.ts │ ├── lists.ts │ ├── tasks.ts │ ├── auth.ts │ └── common.ts ├── main.ts ├── App.vue ├── store │ └── index.ts ├── components │ ├── editor │ │ ├── editor.css │ │ ├── assets │ │ │ └── iconfont.css │ │ └── editor.vue │ ├── user │ │ └── edit-row.vue │ └── uploader.vue ├── pages │ ├── setup │ │ └── setup.vue │ ├── feedback │ │ └── feedback.vue │ ├── task │ │ ├── joinTask.vue │ │ ├── visitorTask.vue │ │ ├── addTask.vue │ │ └── task.vue │ ├── list │ │ ├── addList.vue │ │ └── updateList.vue │ ├── login │ │ └── login.vue │ ├── register │ │ └── register.vue │ ├── user │ │ └── user-edit.vue │ └── index │ │ └── index.vue ├── uitls │ └── request.ts ├── typings │ └── index.d.ts ├── pages.json ├── uni.scss └── manifest.json ├── unpackage └── res │ └── icons │ ├── 120x120.png │ ├── 144x144.png │ ├── 152x152.png │ ├── 167x167.png │ ├── 180x180.png │ ├── 192x192.png │ ├── 20x20.png │ ├── 29x29.png │ ├── 40x40.png │ ├── 58x58.png │ ├── 60x60.png │ ├── 72x72.png │ ├── 76x76.png │ ├── 80x80.png │ ├── 87x87.png │ ├── 96x96.png │ └── 1024x1024.png ├── .env.production ├── .env.development ├── .gitignore ├── jest.config.js ├── vue.config.js ├── README.md ├── postcss.config.js ├── tsconfig.json ├── public └── index.html ├── simple-plant.puml ├── babel.config.js └── package.json /src/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/logo.png -------------------------------------------------------------------------------- /src/sfc.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.vue" { 2 | import Vue from 'vue' 3 | export default Vue 4 | } -------------------------------------------------------------------------------- /src/static/icons/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/close.png -------------------------------------------------------------------------------- /src/static/icons/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/more.png -------------------------------------------------------------------------------- /src/static/icons/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/share.png -------------------------------------------------------------------------------- /src/static/icons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/user.png -------------------------------------------------------------------------------- /src/static/icons/write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/write.png -------------------------------------------------------------------------------- /src/static/img/setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/img/setup.png -------------------------------------------------------------------------------- /src/static/icons/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/finish.png -------------------------------------------------------------------------------- /src/static/icons/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/upload.png -------------------------------------------------------------------------------- /src/static/icons/enclosure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/enclosure.png -------------------------------------------------------------------------------- /src/static/icons/leftTime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/leftTime.png -------------------------------------------------------------------------------- /src/static/img/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/img/background.jpg -------------------------------------------------------------------------------- /unpackage/res/icons/120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/120x120.png -------------------------------------------------------------------------------- /unpackage/res/icons/144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/144x144.png -------------------------------------------------------------------------------- /unpackage/res/icons/152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/152x152.png -------------------------------------------------------------------------------- /unpackage/res/icons/167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/167x167.png -------------------------------------------------------------------------------- /unpackage/res/icons/180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/180x180.png -------------------------------------------------------------------------------- /unpackage/res/icons/192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/192x192.png -------------------------------------------------------------------------------- /unpackage/res/icons/20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/20x20.png -------------------------------------------------------------------------------- /unpackage/res/icons/29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/29x29.png -------------------------------------------------------------------------------- /unpackage/res/icons/40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/40x40.png -------------------------------------------------------------------------------- /unpackage/res/icons/58x58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/58x58.png -------------------------------------------------------------------------------- /unpackage/res/icons/60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/60x60.png -------------------------------------------------------------------------------- /unpackage/res/icons/72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/72x72.png -------------------------------------------------------------------------------- /unpackage/res/icons/76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/76x76.png -------------------------------------------------------------------------------- /unpackage/res/icons/80x80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/80x80.png -------------------------------------------------------------------------------- /unpackage/res/icons/87x87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/87x87.png -------------------------------------------------------------------------------- /unpackage/res/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/96x96.png -------------------------------------------------------------------------------- /src/static/icons/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/src/static/icons/arrow-right.png -------------------------------------------------------------------------------- /unpackage/res/icons/1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qifan777/simple-plan/HEAD/unpackage/res/icons/1024x1024.png -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | VUE_APP_BASE_URL=https://www.jarcheng.top/cloud-api/plan 2 | VUE_APP_UPLOAD_URL=https://www.jarcheng.top/cloud-api/system 3 | -------------------------------------------------------------------------------- /src/api/feedback.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from "@/uitls/request" 2 | 3 | export const saveFeedback=function(data:any){ 4 | return requestWithToken('/feedback/save','POST',data) 5 | } -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | 4 | Vue.config.productionTip = false 5 | import store from './store' 6 | const app=new App({store}) 7 | app.$mount() 8 | -------------------------------------------------------------------------------- /src/api/wechat.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from "@/uitls/request"; 2 | 3 | export const getWechatPhone = function (data: any) { 4 | return requestWithToken("/wechat/phone", "GET", data); 5 | }; 6 | -------------------------------------------------------------------------------- /src/api/user.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from "@/uitls/request" 2 | 3 | export const updateUser=(data:any)=>{ 4 | return requestWithToken('/user/update','POST',data) 5 | } 6 | export const getUserInfo=()=>{ 7 | return requestWithToken("/user/info", "GET", null) 8 | } -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | ##VUE_APP_BASE_URL=/api/plan 2 | ##VUE_APP_UPLOAD_URL=/api/system 3 | VUE_APP_BASE_URL=https://www.jarcheng.top/cloud-api/plan 4 | VUE_APP_UPLOAD_URL=https://www.jarcheng.top/cloud-api/system 5 | #VUE_APP_BASE_URL=http://192.168.0.104/plan 6 | #VUE_APP_UPLOAD_URL=http://192.168.0.104/system -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | # unpackage/ 4 | dist/ 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .project 17 | .hbuilderx 18 | .idea 19 | .vscode 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw* 25 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 20 | -------------------------------------------------------------------------------- /src/api/lists.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from '@/uitls/request' 2 | 3 | export const listLists = (data: any) => { 4 | return requestWithToken('/list/findAll', 'GET', data) 5 | } 6 | export const createList = (data: any) => { 7 | return requestWithToken('/list/save', 'POST', data) 8 | } 9 | export const deleteLists=(data:any)=>{ 10 | return requestWithToken('/list/delete?ids='+data,'GET',null) 11 | } 12 | export const updateList=(data:any)=>{ 13 | return requestWithToken('/list/update','POST',data) 14 | } 15 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | globalTeardown: '@dcloudio/uni-automator/dist/teardown.js', 3 | testEnvironment: '@dcloudio/uni-automator/dist/environment.js', 4 | testEnvironmentOptions: {}, 5 | testTimeout: 15000, 6 | reporters: [ 7 | 'default' 8 | ], 9 | watchPathIgnorePatterns: ['/node_modules/', '/dist/', '/.git/'], 10 | moduleFileExtensions: ['js', 'json'], 11 | rootDir: __dirname, 12 | testMatch: ['/src/**/*test.[jt]s?(x)'], 13 | testPathIgnorePatterns: ['/node_modules/'] 14 | } 15 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | transpileDependencies: ['@dcloudio/uni-ui'], 3 | devServer: { 4 | disableHostCheck: true, 5 | open: true, 6 | port: 3000, 7 | proxy: { 8 | '/api': { 9 | // target: 'http://localhost', 10 | target:"https://www.jarcheng.top/cloud-api", 11 | changeOrigin: true, 12 | pathRewrite: { 13 | '^/api': '' 14 | } 15 | } 16 | } 17 | }, 18 | publicPath: './', 19 | }; -------------------------------------------------------------------------------- /src/store/index.ts: -------------------------------------------------------------------------------- 1 | import { User } from "@/typings"; 2 | import Vuex from "vuex"; 3 | import Vue from "vue"; 4 | import { getUserInfo as getUserInfo2 } from "@/api/user"; 5 | Vue.use(Vuex) 6 | const store = new Vuex.Store({ 7 | state: { 8 | userInfo: {} as User, 9 | }, 10 | mutations: { 11 | updateUserInfo(state, value) { 12 | state.userInfo = { ...state.userInfo, ...value }; 13 | }, 14 | }, 15 | actions: { 16 | getUserInfo({ commit }) { 17 | getUserInfo2().then((res) => { 18 | commit("updateUserInfo",res.data); 19 | }); 20 | }, 21 | }, 22 | }); 23 | export default store; 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 简计划 2 | 本项目是基于uni-app(vue2语法) 以及typescript。实现了如下功能 3 | 4 |  5 | 6 | - 创建任务清单(包含许多任务) 7 | - 创建任务(添加附件,截至时间,划分子任务,分配任务给其他人) 8 | - 富文本编辑 9 | - 基础登录/注册 10 | ### clone代码 11 | 12 | ``` 13 | #需要安装git命令 14 | git clone https://github.com/jarcheng/simple-plan.git 15 | ``` 16 | 17 | ### 安装yarn 18 | 19 | ``` 20 | #需要安装node.js 21 | npm install yarn -g 22 | ``` 23 | 24 | ### 导入vscode 25 | 26 | 将刚刚clone下的代码导入到vscode,然后点击上面菜单栏中的`terminal`->`new terminal` 在下面弹出的框框中依次输入下面的两条命令 27 | 28 | ### 安装依赖包 29 | 30 | ``` 31 | yarn install 32 | ``` 33 | 34 | ### 启动 35 | ``` 36 | yarn serve 37 | ``` 38 | 39 | ### 具体配置参考uni-app的manifest 40 | See [Configuration Reference](https://uniapp.dcloud.io/collocation/manifest?id=app-plus). 41 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | module.exports = { 3 | parser: require('postcss-comment'), 4 | plugins: [ 5 | require('postcss-import')({ 6 | resolve (id, basedir, importOptions) { 7 | if (id.startsWith('~@/')) { 8 | return path.resolve(process.env.UNI_INPUT_DIR, id.substr(3)) 9 | } else if (id.startsWith('@/')) { 10 | return path.resolve(process.env.UNI_INPUT_DIR, id.substr(2)) 11 | } else if (id.startsWith('/') && !id.startsWith('//')) { 12 | return path.resolve(process.env.UNI_INPUT_DIR, id.substr(1)) 13 | } 14 | return id 15 | } 16 | }), 17 | require('autoprefixer')({ 18 | remove: process.env.UNI_PLATFORM !== 'h5' 19 | }), 20 | require('@dcloudio/vue-cli-plugin-uni/packages/postcss') 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/components/editor/editor.css: -------------------------------------------------------------------------------- 1 | @import "./assets/iconfont.css"; 2 | 3 | .container { 4 | /* position: absolute; */ 5 | /* top: 120px; */ 6 | /* left: 0; */ 7 | width: 100%; 8 | } 9 | 10 | .ql-container { 11 | box-sizing: border-box; 12 | width: 100%; 13 | height: 100%; 14 | font-size: 16px; 15 | line-height: 1.5; 16 | overflow: auto; 17 | padding: 20px 10px 20px 10px; 18 | } 19 | 20 | .ql-active { 21 | color: #22C704; 22 | } 23 | 24 | .iconfont { 25 | display: inline-block; 26 | width: 32px; 27 | height: 30px; 28 | cursor: pointer; 29 | font-size: 20px; 30 | } 31 | 32 | .toolbar { 33 | box-sizing: border-box; 34 | padding: 10px; 35 | /* height: 130px; */ 36 | width: 100%; 37 | /* position: fixed; */ 38 | left: 0; 39 | top: 0; 40 | background: #fff; 41 | right: 100%; 42 | display: flex; 43 | flex-wrap: wrap; 44 | text-align: center; 45 | border-bottom: 1rpx solid #eee; 46 | } 47 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": false, 4 | "target": "esnext", 5 | "module": "esnext", 6 | "strict": true, 7 | "jsx": "preserve", 8 | "importHelpers": true, 9 | "moduleResolution": "node", 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "experimentalDecorators":true, 13 | "sourceMap": true, 14 | "skipLibCheck": true, 15 | "baseUrl": ".", 16 | "types": [ 17 | "webpack-env", 18 | "@dcloudio/types", 19 | "miniprogram-api-typings", 20 | "mini-types", 21 | "@types/three" 22 | ], 23 | "paths": { 24 | "@/*": [ 25 | "./src/*" 26 | ] 27 | }, 28 | "lib": [ 29 | "esnext", 30 | "dom", 31 | "dom.iterable", 32 | "scripthost" 33 | ] 34 | }, 35 | "exclude": [ 36 | "node_modules", 37 | "unpackage", 38 | "src/**/*.nvue" 39 | ] 40 | } 41 | -------------------------------------------------------------------------------- /src/api/tasks.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from "@/uitls/request"; 2 | 3 | export const taskList = (data: any) => { 4 | return requestWithToken("/task/findAll", "GET", data); 5 | }; 6 | export const createTask = (data: any) => { 7 | return requestWithToken("/task/save", "POST", data); 8 | }; 9 | export const updateTask = (data: any) => { 10 | return requestWithToken("/task/update", "POST", data); 11 | }; 12 | export const showTask = (data: any) => { 13 | return requestWithToken("/task/fineOne", "GET", data); 14 | }; 15 | export const shareTask = (data: any) => { 16 | return requestWithToken("/task/share", "GET", data); 17 | }; 18 | export const joinTask = (data: any) => { 19 | return requestWithToken("/task/join", "GET", data); 20 | }; 21 | export const sharedTasks = () => { 22 | return requestWithToken("/task/sharedTasks", "GET", null); 23 | }; 24 | export const deleteRelation=(data:any)=>{ 25 | return requestWithToken("/task/deleteRelation","GET",data) 26 | } -------------------------------------------------------------------------------- /src/api/auth.ts: -------------------------------------------------------------------------------- 1 | import requestWithToken from "@/uitls/request"; 2 | 3 | export const login = (data: any) => { 4 | return requestWithToken("/auth/login", "POST", data); 5 | }; 6 | export const register = (data: any) => { 7 | return requestWithToken("/auth/signUp", "POST", data); 8 | }; 9 | export const wechatLogin = function () { 10 | console.log("微信登陆"); 11 | 12 | uni.login({ 13 | provider: "weixin", 14 | success: (res) => { 15 | let params = { 16 | code: res.code, 17 | }; 18 | requestWithToken("/auth/wechat/login", "GET", params).then((res2) => { 19 | if (res2.data.tokenValue) { 20 | uni.setStorage({ 21 | key: "token", 22 | data: res2.data.tokenValue, 23 | success: () => { 24 | setTimeout(() => { 25 | uni.reLaunch({ 26 | url: "/pages/index/index", 27 | }); 28 | }, 1500); 29 | }, 30 | }); 31 | } 32 | }); 33 | }, 34 | }); 35 | }; 36 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | Please enable JavaScript to continue. 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/components/user/edit-row.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 昵称 5 | 6 | 7 | 起凡 8 | 14 | 15 | 16 | 17 | 18 | 26 | 27 | 49 | -------------------------------------------------------------------------------- /simple-plant.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 用户 --> 小程序首页:搜索简计划 3 | 小程序首页 --> 列表添加页面:点击右下角“+”,\n选择添加清单 4 | 小程序首页-->任务添加页面:在首页找到需要\n添加任务的清单,\n点击它右上方的“···”,\n选择添加任务 5 | 小程序首页-->任务修改页面:在首页左滑需要\n修改的任务,点击修改 6 | @enduml 7 | @startuml 8 | :user: --> (任务清单) 9 | (任务清单)..>(清单删除):include 10 | (任务清单)..>(清单修改):include 11 | (任务清单)..>(清单创建):include 12 | (清单创建)-->(任务) 13 | (任务)..>(任务修改) 14 | (任务)..>(任务提醒) 15 | (任务)..>(任务创建) 16 | (任务)..>(任务分配) 17 | :user2:<--(任务分配) 18 | @enduml 19 | @startuml 20 | class 用户 21 | 用户 ”1“ --o ”many“ 任务清单 22 | 任务清单 ”1“ --o ”many“ 任务 23 | 任务 ”1“ --* ”many“ 任务步骤 24 | 用户 ”many“ --o "many" 任务 25 | @enduml 26 | @startuml 27 | database "Mysql" as mysql 28 | [权限模块]-登录 29 | [权限模块]-left--注册 30 | [权限模块]..>用户查询:调用 31 | [系统模块]-用户查询 32 | [系统模块]-->mysql:查询数据库 33 | [任务管理模块]-登录2 34 | [任务管理模块]-left-注册2 35 | [任务管理模块]..>登录:调用 36 | [任务管理模块]..>注册:调用 37 | @enduml 38 | @startuml 39 | state choice1 <> 40 | [*]-down-> 输入用户名 41 | 输入用户名 -down-> choice1 :判断用户名是否存在 42 | choice1-left->输入用户名: 已经存在 43 | choice1-down->密码加密 44 | 密码加密->注册 45 | @enduml 46 | @startuml 47 | object 任务清单 48 | object 任务步骤 49 | map 任务{ 50 | 清单 *->任务清单 51 | 步骤 *->任务步骤 52 | } 53 | @enduml 54 | @startuml 55 | 56 | @enduml -------------------------------------------------------------------------------- /src/api/common.ts: -------------------------------------------------------------------------------- 1 | export const uploadFile = (filePath: any) => { 2 | let promise = new Promise((resolve, reject) => { 3 | console.log(filePath) 4 | uni.uploadFile({ 5 | url: process.env.VUE_APP_UPLOAD_URL + '/upload/upload', 6 | header: { 7 | jctoken: uni.getStorageSync('token') 8 | }, 9 | name:'name', 10 | filePath: filePath, 11 | success: res => { 12 | console.log(res); 13 | resolve(JSON.parse(res.data)) 14 | }, 15 | fail: result => { 16 | console.log(result); 17 | reject(result) 18 | } 19 | }) 20 | }) 21 | return promise 22 | } 23 | export const dateFormat = function(date:Date) { 24 | var Y = date.getFullYear() + '-'; 25 | var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; 26 | var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; 27 | var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; 28 | var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; 29 | var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); 30 | return Y + M + D + h + m + s; 31 | } -------------------------------------------------------------------------------- /src/pages/setup/setup.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 46 | 63 | -------------------------------------------------------------------------------- /src/uitls/request.ts: -------------------------------------------------------------------------------- 1 | const baseUrl =process.env.VUE_APP_BASE_URL 2 | // const baseUrl = "http://localhost/plan"; 3 | console.log(baseUrl); 4 | import store from "@/store"; 5 | import { wechatLogin } from "@/api/auth"; 6 | const requestWithToken = ( 7 | url: string, 8 | method: 9 | | "OPTIONS" 10 | | "GET" 11 | | "HEAD" 12 | | "POST" 13 | | "PUT" 14 | | "DELETE" 15 | | "TRACE" 16 | | "CONNECT", 17 | data: any 18 | ): Promise => { 19 | let promise = new Promise((resolve, reject) => { 20 | let toekn = uni.getStorageSync("token"); 21 | let requestOptions = { 22 | url: baseUrl + url, 23 | method: method, 24 | data: data, 25 | header: { 26 | jctoken: "", 27 | }, 28 | dataType: "json", 29 | success: (res: any) => { 30 | if (res.data.code == 500) { 31 | uni.showToast({ 32 | title: res.data.msg, 33 | icon: "none", 34 | }); 35 | } 36 | if (res.data.code === 401 || res.data.code === 403) { 37 | // #ifdef H5 || APP-PLUS 38 | uni.navigateTo({ url: "/pages/login/login" }); 39 | // #endif 40 | // #ifdef MP-WEIXIN 41 | wechatLogin(); 42 | // #endif 43 | // store.commit('setLoginShow', true) 44 | } else { 45 | resolve(res.data); 46 | } 47 | }, 48 | fail: (res: any) => { 49 | reject(res); 50 | }, 51 | }; 52 | if (toekn) { 53 | requestOptions.header.jctoken = toekn; 54 | } 55 | uni.request(requestOptions); 56 | }); 57 | return promise; 58 | }; 59 | export default requestWithToken; 60 | -------------------------------------------------------------------------------- /src/pages/feedback/feedback.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 提交 10 | 11 | 12 | 13 | 14 | 35 | 36 | 72 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | const plugins = [] 2 | 3 | if (process.env.UNI_OPT_TREESHAKINGNG) { 4 | plugins.push(require('@dcloudio/vue-cli-plugin-uni-optimize/packages/babel-plugin-uni-api/index.js')) 5 | } 6 | 7 | if ( 8 | ( 9 | process.env.UNI_PLATFORM === 'app-plus' && 10 | process.env.UNI_USING_V8 11 | ) || 12 | ( 13 | process.env.UNI_PLATFORM === 'h5' && 14 | process.env.UNI_H5_BROWSER === 'builtin' 15 | ) 16 | ) { 17 | const path = require('path') 18 | 19 | const isWin = /^win/.test(process.platform) 20 | 21 | const normalizePath = path => (isWin ? path.replace(/\\/g, '/') : path) 22 | 23 | const input = normalizePath(process.env.UNI_INPUT_DIR) 24 | try { 25 | plugins.push([ 26 | require('@dcloudio/vue-cli-plugin-hbuilderx/packages/babel-plugin-console'), 27 | { 28 | file (file) { 29 | file = normalizePath(file) 30 | if (file.indexOf(input) === 0) { 31 | return path.relative(input, file) 32 | } 33 | return false 34 | } 35 | } 36 | ]) 37 | } catch (e) {} 38 | } 39 | 40 | process.UNI_LIBRARIES = process.UNI_LIBRARIES || ['@dcloudio/uni-ui'] 41 | process.UNI_LIBRARIES.forEach(libraryName => { 42 | plugins.push([ 43 | 'import', 44 | { 45 | 'libraryName': libraryName, 46 | 'customName': (name) => { 47 | return `${libraryName}/lib/${name}/${name}` 48 | } 49 | } 50 | ]) 51 | }) 52 | module.exports = { 53 | presets: [ 54 | [ 55 | '@vue/app', 56 | { 57 | modules: 'commonjs', 58 | useBuiltIns: process.env.UNI_PLATFORM === 'h5' ? 'usage' : 'entry' 59 | } 60 | ] 61 | ], 62 | plugins 63 | } 64 | -------------------------------------------------------------------------------- /src/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Model User 3 | */ 4 | 5 | export type User = { 6 | id: number; 7 | nickName: string; 8 | gender: string; 9 | phoneNumber: string; 10 | avatar: string | null; 11 | sysUserId: number; 12 | createdTime: Date; 13 | updatedTime: Date; 14 | }; 15 | 16 | /** 17 | * Model Task 18 | */ 19 | 20 | export type Task = { 21 | taskId: number; 22 | title: string; 23 | description: string; 24 | checked: boolean; 25 | deadline: Date | null | string; 26 | remindTime: Date | null | string; 27 | appendix: string | null; 28 | userId: number; 29 | createdTime: Date | string; 30 | updatedTime: Date | string; 31 | listId: number; 32 | isSubscribe?: boolean; 33 | steps: Step[]; 34 | leftTime?: number; 35 | }; 36 | 37 | /** 38 | * Model Step 39 | */ 40 | 41 | export type Step = { 42 | stepId: number; 43 | content: string; 44 | checked: boolean; 45 | taskId: number; 46 | createdTime: Date; 47 | updatedTime: Date; 48 | }; 49 | 50 | /** 51 | * Model List 52 | */ 53 | 54 | export type List = { 55 | listId: number; 56 | title: string; 57 | userId: number; 58 | createdTime?: Date; 59 | updatedTime?: Date; 60 | tasks?: Task[]; 61 | }; 62 | 63 | /** 64 | * Model TaskUser 65 | */ 66 | 67 | export type TaskUser = { 68 | id: number; 69 | taskId: number; 70 | userId: number; 71 | createdTime: Date; 72 | updatedTime: Date; 73 | }; 74 | 75 | /** 76 | * Model ListTask 77 | */ 78 | 79 | export type ListTask = { 80 | id: number; 81 | taskId: number; 82 | listId: number; 83 | task: Task; 84 | list: List; 85 | createdTime: Date; 86 | updatedTime: Date; 87 | }; 88 | interface myFile { 89 | name: string; 90 | path: string; 91 | status: string; 92 | } 93 | -------------------------------------------------------------------------------- /src/pages.json: -------------------------------------------------------------------------------- 1 | { 2 | "easycom": { 3 | "autoscan": true, 4 | "custom": { 5 | "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" 6 | } 7 | }, 8 | "pages": [ 9 | // #ifdef MP-WEIXIN 10 | { 11 | "path": "pages/setup/setup", 12 | "style": { 13 | "navigationStyle": "custom" 14 | } 15 | }, 16 | // #endif 17 | { 18 | "path": "pages/index/index", 19 | "style": { 20 | "navigationStyle": "custom" 21 | } 22 | }, 23 | { 24 | "path": "pages/login/login", 25 | "style": { 26 | "navigationStyle": "custom" 27 | } 28 | }, 29 | { 30 | "path": "pages/user/user-edit", 31 | "style": { 32 | "navigationBarTitleText": "我的信息", 33 | "enablePullDownRefresh": false 34 | } 35 | }, 36 | { 37 | "path":"pages/feedback/feedback", 38 | "style": { 39 | "navigationBarTitleText": "反馈", 40 | "enablePullDownRefresh": false 41 | } 42 | }, 43 | { 44 | "path": "pages/register/register", 45 | "style": { 46 | "navigationStyle": "custom" 47 | } 48 | }, 49 | { 50 | "path": "pages/task/addTask", 51 | "style": { 52 | "navigationBarTitleText": "添加任务" 53 | } 54 | }, 55 | { 56 | "path": "pages/task/task", 57 | "style": { 58 | "navigationBarTitleText": "" 59 | } 60 | }, 61 | { 62 | "path":"pages/task/visitorTask", 63 | "style":{ 64 | "navigationBarTitleText":"" 65 | } 66 | } 67 | ], 68 | "globalStyle": { 69 | "navigationBarTextStyle": "black", 70 | "navigationBarTitleText": "简计划", 71 | "navigationBarBackgroundColor": "#F8F8F8", 72 | "backgroundColor": "#F8F8F8" 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/uni.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 这里是uni-app内置的常用样式变量 3 | * 4 | * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 5 | * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App 6 | * 7 | */ 8 | 9 | /** 10 | * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 11 | * 12 | * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 13 | */ 14 | 15 | /* 颜色变量 */ 16 | 17 | /* 行为相关颜色 */ 18 | $uni-color-primary: #007aff; 19 | $uni-color-success: #4cd964; 20 | $uni-color-warning: #f0ad4e; 21 | $uni-color-error: #dd524d; 22 | 23 | /* 文字基本颜色 */ 24 | $uni-text-color:#333;//基本色 25 | $uni-text-color-inverse:#fff;//反色 26 | $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 27 | $uni-text-color-placeholder: #808080; 28 | $uni-text-color-disable:#c0c0c0; 29 | 30 | /* 背景颜色 */ 31 | $uni-bg-color:#ffffff; 32 | $uni-bg-color-grey:#f8f8f8; 33 | $uni-bg-color-hover:#f1f1f1;//点击状态颜色 34 | $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 35 | 36 | /* 边框颜色 */ 37 | $uni-border-color:#c8c7cc; 38 | 39 | /* 尺寸变量 */ 40 | 41 | /* 文字尺寸 */ 42 | $uni-font-size-sm:24rpx; 43 | $uni-font-size-base:28rpx; 44 | $uni-font-size-lg:32rpx; 45 | 46 | /* 图片尺寸 */ 47 | $uni-img-size-sm:40rpx; 48 | $uni-img-size-base:52rpx; 49 | $uni-img-size-lg:80rpx; 50 | 51 | /* Border Radius */ 52 | $uni-border-radius-sm: 4rpx; 53 | $uni-border-radius-base: 6rpx; 54 | $uni-border-radius-lg: 12rpx; 55 | $uni-border-radius-circle: 50%; 56 | 57 | /* 水平间距 */ 58 | $uni-spacing-row-sm: 10px; 59 | $uni-spacing-row-base: 20rpx; 60 | $uni-spacing-row-lg: 30rpx; 61 | 62 | /* 垂直间距 */ 63 | $uni-spacing-col-sm: 8rpx; 64 | $uni-spacing-col-base: 16rpx; 65 | $uni-spacing-col-lg: 24rpx; 66 | 67 | /* 透明度 */ 68 | $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 69 | 70 | /* 文章场景相关 */ 71 | $uni-color-title: #2C405A; // 文章标题颜色 72 | $uni-font-size-title:40rpx; 73 | $uni-color-subtitle: #555555; // 二级标题颜色 74 | $uni-font-size-subtitle:36rpx; 75 | $uni-color-paragraph: #3F536E; // 文章段落颜色 76 | $uni-font-size-paragraph:30rpx; -------------------------------------------------------------------------------- /src/pages/task/joinTask.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 加入任务 4 | 5 | 6 | 12 | 13 | 提交 14 | 15 | 16 | 17 | 46 | 87 | -------------------------------------------------------------------------------- /src/pages/list/addList.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 添加列表 4 | 5 | 6 | 12 | 13 | 提交 14 | 15 | 16 | 17 | 47 | 88 | -------------------------------------------------------------------------------- /src/pages/list/updateList.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 编辑列表 4 | 5 | 6 | 12 | 13 | 提交 14 | 15 | 16 | 17 | 52 | 93 | -------------------------------------------------------------------------------- /src/pages/login/login.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LOGIN 6 | 7 | 登录 8 | 9 | 10 | 去注册 11 | 登录 12 | 13 | 14 | 15 | 53 | 152 | -------------------------------------------------------------------------------- /src/pages/register/register.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | RGISTER 6 | 7 | 注册 8 | 14 | 20 | 去登录 21 | 注册 22 | 23 | 24 | 25 | 52 | 141 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-alpha-project", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "npm run dev:h5", 7 | "build": "npm run build:h5", 8 | "build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build", 9 | "build:custom": "cross-env NODE_ENV=production uniapp-cli custom", 10 | "build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build", 11 | "build:mp-360": "cross-env NODE_ENV=production UNI_PLATFORM=mp-360 vue-cli-service uni-build", 12 | "build:mp-alipay": "cross-env NODE_ENV=production UNI_PLATFORM=mp-alipay vue-cli-service uni-build", 13 | "build:mp-baidu": "cross-env NODE_ENV=production UNI_PLATFORM=mp-baidu vue-cli-service uni-build", 14 | "build:mp-kuaishou": "cross-env NODE_ENV=production UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build", 15 | "build:mp-qq": "cross-env NODE_ENV=production UNI_PLATFORM=mp-qq vue-cli-service uni-build", 16 | "build:mp-toutiao": "cross-env NODE_ENV=production UNI_PLATFORM=mp-toutiao vue-cli-service uni-build", 17 | "build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build", 18 | "build:quickapp-native": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-native vue-cli-service uni-build", 19 | "build:quickapp-webview": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview vue-cli-service uni-build", 20 | "build:quickapp-webview-huawei": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build", 21 | "build:quickapp-webview-union": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build", 22 | "dev:app-plus": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch", 23 | "dev:custom": "cross-env NODE_ENV=development uniapp-cli custom", 24 | "dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve", 25 | "dev:mp-360": "cross-env NODE_ENV=development UNI_PLATFORM=mp-360 vue-cli-service uni-build --watch", 26 | "dev:mp-alipay": "cross-env NODE_ENV=development UNI_PLATFORM=mp-alipay vue-cli-service uni-build --watch", 27 | "dev:mp-baidu": "cross-env NODE_ENV=development UNI_PLATFORM=mp-baidu vue-cli-service uni-build --watch", 28 | "dev:mp-kuaishou": "cross-env NODE_ENV=development UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build --watch", 29 | "dev:mp-qq": "cross-env NODE_ENV=development UNI_PLATFORM=mp-qq vue-cli-service uni-build --watch", 30 | "dev:mp-toutiao": "cross-env NODE_ENV=development UNI_PLATFORM=mp-toutiao vue-cli-service uni-build --watch", 31 | "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch", 32 | "dev:quickapp-native": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-native vue-cli-service uni-build --watch", 33 | "dev:quickapp-webview": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview vue-cli-service uni-build --watch", 34 | "dev:quickapp-webview-huawei": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build --watch", 35 | "dev:quickapp-webview-union": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build --watch", 36 | "info": "node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js", 37 | "serve:quickapp-native": "node node_modules/@dcloudio/uni-quickapp-native/bin/serve.js", 38 | "test:android": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=android jest -i", 39 | "test:h5": "cross-env UNI_PLATFORM=h5 jest -i", 40 | "test:ios": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=ios jest -i", 41 | "test:mp-baidu": "cross-env UNI_PLATFORM=mp-baidu jest -i", 42 | "test:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin jest -i" 43 | }, 44 | "dependencies": { 45 | "@dcloudio/uni-app-plus": "^2.0.0", 46 | "@dcloudio/uni-h5": "^2.0.0", 47 | "@dcloudio/uni-helper-json": "*", 48 | "@dcloudio/uni-i18n": "^2.0.0", 49 | "@dcloudio/uni-mp-360": "^2.0.0", 50 | "@dcloudio/uni-mp-alipay": "^2.0.0", 51 | "@dcloudio/uni-mp-baidu": "^2.0.0", 52 | "@dcloudio/uni-mp-kuaishou": "^2.0.0", 53 | "@dcloudio/uni-mp-qq": "^2.0.0", 54 | "@dcloudio/uni-mp-toutiao": "^2.0.0", 55 | "@dcloudio/uni-mp-vue": "^2.0.0", 56 | "@dcloudio/uni-mp-weixin": "^2.0.0", 57 | "@dcloudio/uni-quickapp-native": "^2.0.0", 58 | "@dcloudio/uni-quickapp-webview": "^2.0.0", 59 | "@dcloudio/uni-stat": "^2.0.0", 60 | "@dcloudio/uni-ui": "^1.4.6", 61 | "@vue/shared": "^3.0.0", 62 | "core-js": "^3.6.5", 63 | "flyio": "^0.6.2", 64 | "moment": "^2.29.1", 65 | "regenerator-runtime": "^0.12.1", 66 | "sass": "^1.43.4", 67 | "sass-loader": "10.1.0", 68 | "three": "^0.134.0", 69 | "vue": "^2.6.11", 70 | "vue-class-component": "^6.3.2", 71 | "vue-property-decorator": "^8.0.0", 72 | "vuex": "^3.2.0" 73 | }, 74 | "devDependencies": { 75 | "@babel/plugin-syntax-typescript": "^7.2.0", 76 | "@babel/runtime": "~7.12.0", 77 | "@dcloudio/types": "*", 78 | "@dcloudio/uni-automator": "^2.0.0", 79 | "@dcloudio/uni-cli-shared": "^2.0.0", 80 | "@dcloudio/uni-migration": "^2.0.0", 81 | "@dcloudio/uni-template-compiler": "^2.0.0", 82 | "@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.0", 83 | "@dcloudio/vue-cli-plugin-uni": "^2.0.0", 84 | "@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.0", 85 | "@dcloudio/webpack-uni-mp-loader": "^2.0.0", 86 | "@dcloudio/webpack-uni-pages-loader": "^2.0.0", 87 | "@types/three": "^0.134.0", 88 | "@vue/cli-plugin-babel": "~4.5.0", 89 | "@vue/cli-plugin-typescript": "*", 90 | "@vue/cli-service": "~4.5.0", 91 | "babel-plugin-import": "^1.11.0", 92 | "cross-env": "^7.0.2", 93 | "jest": "^25.4.0", 94 | "mini-types": "*", 95 | "miniprogram-api-typings": "*", 96 | "postcss-comment": "^2.0.0", 97 | "typescript": "^3.0.0", 98 | "vue-template-compiler": "^2.6.11" 99 | }, 100 | "browserslist": [ 101 | "Android >= 4", 102 | "ios >= 8" 103 | ], 104 | "uni-app": { 105 | "scripts": {} 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/pages/task/visitorTask.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 29 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 45 | 46 | 47 | 48 | 49 | 55 | 56 | 57 | 58 | 59 | 60 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 141 | 218 | -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "简计划", 3 | "appid" : "__UNI__6D29B04", 4 | "description" : "安排计划", 5 | "versionName" : "1.0.0", 6 | "versionCode" : "100", 7 | "transformPx" : false, 8 | "app-plus" : { 9 | "compatible" : { 10 | "ignoreVersion" : true 11 | }, 12 | /* 5+App特有相关 */ 13 | "modules" : {}, 14 | /* 模块配置 */ 15 | "distribute" : { 16 | /* 应用发布信息 */ 17 | "android" : { 18 | /* android打包配置 */ 19 | "permissions" : [ 20 | "", 21 | "", 22 | "", 23 | "", 24 | "", 25 | "", 26 | "", 27 | "", 28 | "", 29 | "", 30 | "", 31 | "", 32 | "", 33 | "", 34 | "", 35 | "", 36 | "", 37 | "", 38 | "", 39 | "", 40 | "", 41 | "" 42 | ] 43 | }, 44 | "ios" : {}, 45 | /* ios打包配置 */ 46 | "sdkConfigs" : { 47 | "ad" : {} 48 | }, 49 | "icons" : { 50 | "android" : { 51 | "hdpi" : "unpackage/res/icons/72x72.png", 52 | "xhdpi" : "unpackage/res/icons/96x96.png", 53 | "xxhdpi" : "unpackage/res/icons/144x144.png", 54 | "xxxhdpi" : "unpackage/res/icons/192x192.png" 55 | }, 56 | "ios" : { 57 | "appstore" : "unpackage/res/icons/1024x1024.png", 58 | "ipad" : { 59 | "app" : "unpackage/res/icons/76x76.png", 60 | "app@2x" : "unpackage/res/icons/152x152.png", 61 | "notification" : "unpackage/res/icons/20x20.png", 62 | "notification@2x" : "unpackage/res/icons/40x40.png", 63 | "proapp@2x" : "unpackage/res/icons/167x167.png", 64 | "settings" : "unpackage/res/icons/29x29.png", 65 | "settings@2x" : "unpackage/res/icons/58x58.png", 66 | "spotlight" : "unpackage/res/icons/40x40.png", 67 | "spotlight@2x" : "unpackage/res/icons/80x80.png" 68 | }, 69 | "iphone" : { 70 | "app@2x" : "unpackage/res/icons/120x120.png", 71 | "app@3x" : "unpackage/res/icons/180x180.png", 72 | "notification@2x" : "unpackage/res/icons/40x40.png", 73 | "notification@3x" : "unpackage/res/icons/60x60.png", 74 | "settings@2x" : "unpackage/res/icons/58x58.png", 75 | "settings@3x" : "unpackage/res/icons/87x87.png", 76 | "spotlight@2x" : "unpackage/res/icons/80x80.png", 77 | "spotlight@3x" : "unpackage/res/icons/120x120.png" 78 | } 79 | } 80 | }, 81 | "splashscreen" : { 82 | "androidStyle" : "default", 83 | "android" : { 84 | "xhdpi" : "C:/Users/jarcheng/Desktop/简计划.png", 85 | "xxhdpi" : "C:/Users/jarcheng/Desktop/简计划2.png" 86 | } 87 | } 88 | }, 89 | /* SDK配置 */ 90 | "usingComponents" : true, 91 | "nativePlugins" : { 92 | "GuoWei-SelectFileModule" : { 93 | "__plugin_info__" : { 94 | "name" : "Android文件选择", 95 | "description" : "目录方式,选择Android手机储存文件,支持多选、过滤", 96 | "platforms" : "Android", 97 | "url" : "https://ext.dcloud.net.cn/plugin?id=4607", 98 | "android_package_name" : "com.jarcheng", 99 | "ios_bundle_id" : "", 100 | "isCloud" : true, 101 | "bought" : 1, 102 | "pid" : "4607", 103 | "parameters" : {} 104 | } 105 | } 106 | } 107 | }, 108 | "quickapp" : {}, 109 | /* 快应用特有相关 */ 110 | "mp-weixin" : { 111 | /* 小程序特有相关 */ 112 | "usingComponents" : true, 113 | "appid" : "wx299a0ab27981093f", 114 | "setting" : { 115 | "urlCheck" : false 116 | } 117 | }, 118 | "mp-alipay" : { 119 | "usingComponents" : true 120 | }, 121 | "mp-baidu" : { 122 | "usingComponents" : true 123 | }, 124 | "mp-toutiao" : { 125 | "usingComponents" : true 126 | }, 127 | "mp-qq" : { 128 | "usingComponents" : true 129 | }, 130 | "h5" : { 131 | "router" : { 132 | "base" : "./", 133 | "mode" : "hash" 134 | }, 135 | "title" : "简计划" 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /src/components/uploader.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | {{ file.name }} 12 | 18 | 19 | 25 | 26 | 33 | 上传 34 | 35 | 36 | 37 | 170 | 244 | -------------------------------------------------------------------------------- /src/pages/task/addTask.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 26 | 27 | 28 | 29 | + 30 | 下一步 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 47 | 48 | 49 | 50 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 提交 66 | 67 | 68 | 174 | 244 | -------------------------------------------------------------------------------- /src/pages/user/user-edit.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 头像 6 | 7 | 13 | 19 | 20 | 21 | 22 | 37 | 38 | 39 | 昵称 40 | 41 | {{ tempInfo.nickName }} 42 | 43 | 44 | 45 | 46 | 47 | 性别 48 | 49 | {{ tempInfo.gender }} 50 | 51 | 52 | 53 | 54 | 55 | 反馈 56 | 点击反馈 57 | 58 | 59 | 60 | 65 | 66 | 男 71 | 女 76 | 保密 81 | 82 | 83 | 84 | 85 | 90 | 91 | 96 | 97 | 98 | 99 | 100 | 退出登录 101 | 102 | 103 | 104 | 105 | 237 | 238 | 363 | -------------------------------------------------------------------------------- /src/pages/task/task.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 29 | 35 | 36 | 37 | + 38 | 下一步 39 | 40 | 41 | 42 | 43 | 44 | 45 | 50 | 51 | 52 | 53 | 54 | 55 | 60 | 分配给 61 | 62 | 63 | 64 | 65 | 70 | 71 | 72 | 73 | 74 | 75 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 更新 89 | 90 | 91 | 249 | 250 | 327 | -------------------------------------------------------------------------------- /src/components/editor/assets/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('//at.alicdn.com/t/font_945958_zfsfjju1dim.eot?t=1547618146468'); /* IE9 */ 3 | src: url('//at.alicdn.com/t/font_945958_zfsfjju1dim.eot?t=1547618146468#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), 5 | url('//at.alicdn.com/t/font_945958_zfsfjju1dim.woff?t=1547618146468') format('woff'), 6 | url('//at.alicdn.com/t/font_945958_zfsfjju1dim.ttf?t=1547618146468') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('//at.alicdn.com/t/font_945958_zfsfjju1dim.svg?t=1547618146468#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-redo:before { 19 | content: "\e627"; 20 | } 21 | 22 | .icon-undo:before { 23 | content: "\e633"; 24 | } 25 | 26 | .icon-indent:before { 27 | content: "\eb28"; 28 | } 29 | 30 | .icon-outdent:before { 31 | content: "\e6e8"; 32 | } 33 | 34 | .icon-fontsize:before { 35 | content: "\e6fd"; 36 | } 37 | 38 | .icon-format-header-1:before { 39 | content: "\e860"; 40 | } 41 | 42 | .icon-format-header-4:before { 43 | content: "\e863"; 44 | } 45 | 46 | .icon-format-header-5:before { 47 | content: "\e864"; 48 | } 49 | 50 | .icon-format-header-6:before { 51 | content: "\e865"; 52 | } 53 | 54 | .icon-clearup:before { 55 | content: "\e64d"; 56 | } 57 | 58 | .icon-preview:before { 59 | content: "\e631"; 60 | } 61 | 62 | .icon-date:before { 63 | content: "\e63e"; 64 | } 65 | 66 | .icon-fontbgcolor:before { 67 | content: "\e678"; 68 | } 69 | 70 | .icon-clearedformat:before { 71 | content: "\e67e"; 72 | } 73 | 74 | .icon-font:before { 75 | content: "\e684"; 76 | } 77 | 78 | .icon-723bianjiqi_duanhouju:before { 79 | content: "\e65f"; 80 | } 81 | 82 | .icon-722bianjiqi_duanqianju:before { 83 | content: "\e660"; 84 | } 85 | 86 | .icon-text_color:before { 87 | content: "\e72c"; 88 | } 89 | 90 | .icon-format-header-2:before { 91 | content: "\e75c"; 92 | } 93 | 94 | .icon-format-header-3:before { 95 | content: "\e75d"; 96 | } 97 | 98 | .icon--checklist:before { 99 | content: "\e664"; 100 | } 101 | 102 | .icon-baocun:before { 103 | content: "\ec09"; 104 | } 105 | 106 | .icon-line-height:before { 107 | content: "\e7f8"; 108 | } 109 | 110 | .icon-quanping:before { 111 | content: "\ec13"; 112 | } 113 | 114 | .icon-direction-rtl:before { 115 | content: "\e66e"; 116 | } 117 | 118 | .icon-direction-ltr:before { 119 | content: "\e66d"; 120 | } 121 | 122 | .icon-selectall:before { 123 | content: "\e62b"; 124 | } 125 | 126 | .icon-fuzhi:before { 127 | content: "\ec7a"; 128 | } 129 | 130 | .icon-shanchu:before { 131 | content: "\ec7b"; 132 | } 133 | 134 | .icon-bianjisekuai:before { 135 | content: "\ec7c"; 136 | } 137 | 138 | .icon-fengexian:before { 139 | content: "\ec7f"; 140 | } 141 | 142 | .icon-dianzan:before { 143 | content: "\ec80"; 144 | } 145 | 146 | .icon-charulianjie:before { 147 | content: "\ec81"; 148 | } 149 | 150 | .icon-charutupian:before { 151 | content: "\ec82"; 152 | } 153 | 154 | .icon-wuxupailie:before { 155 | content: "\ec83"; 156 | } 157 | 158 | .icon-juzhongduiqi:before { 159 | content: "\ec84"; 160 | } 161 | 162 | .icon-yinyong:before { 163 | content: "\ec85"; 164 | } 165 | 166 | .icon-youxupailie:before { 167 | content: "\ec86"; 168 | } 169 | 170 | .icon-youduiqi:before { 171 | content: "\ec87"; 172 | } 173 | 174 | .icon-zitidaima:before { 175 | content: "\ec88"; 176 | } 177 | 178 | .icon-xiaolian:before { 179 | content: "\ec89"; 180 | } 181 | 182 | .icon-zitijiacu:before { 183 | content: "\ec8a"; 184 | } 185 | 186 | .icon-zitishanchuxian:before { 187 | content: "\ec8b"; 188 | } 189 | 190 | .icon-zitishangbiao:before { 191 | content: "\ec8c"; 192 | } 193 | 194 | .icon-zitibiaoti:before { 195 | content: "\ec8d"; 196 | } 197 | 198 | .icon-zitixiahuaxian:before { 199 | content: "\ec8e"; 200 | } 201 | 202 | .icon-zitixieti:before { 203 | content: "\ec8f"; 204 | } 205 | 206 | .icon-zitiyanse:before { 207 | content: "\ec90"; 208 | } 209 | 210 | .icon-zuoduiqi:before { 211 | content: "\ec91"; 212 | } 213 | 214 | .icon-zitiyulan:before { 215 | content: "\ec92"; 216 | } 217 | 218 | .icon-zitixiabiao:before { 219 | content: "\ec93"; 220 | } 221 | 222 | .icon-zuoyouduiqi:before { 223 | content: "\ec94"; 224 | } 225 | 226 | .icon-duigoux:before { 227 | content: "\ec9e"; 228 | } 229 | 230 | .icon-guanbi:before { 231 | content: "\eca0"; 232 | } 233 | 234 | .icon-shengyin_shiti:before { 235 | content: "\eca5"; 236 | } 237 | 238 | .icon-Character-Spacing:before { 239 | content: "\e964"; 240 | } 241 | -------------------------------------------------------------------------------- /src/components/editor/editor.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 17 | 26 | 35 | 44 | 53 | 62 | 67 | 74 | 81 | 90 | 99 | 108 | 117 | 125 | 134 | 143 | 152 | 153 | 159 | 168 | 177 | 186 | 187 | 188 | 189 | 190 | 198 | 204 | 213 | 222 | 228 | 234 | 235 | 236 | 245 | 254 | 255 | 256 | 265 | 266 | 267 | 268 | 269 | 280 | 281 | 282 | 283 | 284 | 431 | 434 | -------------------------------------------------------------------------------- /src/pages/index/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | {{ 14 | "Hello," + userInfo.nickName 15 | }} 16 | 您还未登录,点击登录 22 | 我的信息 23 | 24 | 29 | 34 | 35 | 36 | 37 | 38 | 39 | 我的清单 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | {{ list.title }} 48 | 49 | 50 | 57 | 58 | 63 | 64 | 69 | 添加任务 70 | 71 | 编辑列表 72 | 删除列表 73 | 74 | 75 | 76 | 77 | 78 | 86 | 87 | 88 | 94 | 95 | 110 | {{ task.title }} 111 | 112 | 113 | {{ moment(task.deadline).from(moment(), false) }} 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | {{ list.title }} 131 | 132 | 133 | 140 | 141 | 142 | 143 | 148 | 添加任务 149 | 150 | 编辑列表 151 | 删除列表 152 | 153 | 154 | 155 | 156 | 157 | 165 | 166 | 167 | 173 | 174 | 189 | {{ task.title }} 190 | 191 | 192 | {{ moment(task.deadline).from(moment(), false) }} 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | + 208 | 209 | 210 | 211 | 212 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 429 | 430 | 743 | --------------------------------------------------------------------------------