Browse Source

feat: 新建形目

project
wangrongrong 4 years ago
parent
commit
f7d71081ae
  1. 231
      CHANGELOG.md
  2. 2
      package.json
  3. 316
      src/components/Title/Title.vue
  4. 292
      src/components/Title/components/NewProjects.vue

231
CHANGELOG.md

@ -1,8 +1,49 @@
# 0.1.0 (2021-08-26)
# 0.1.0 (2021-08-27)
### 🌟 新功能
范围|描述|commitId
--|--|--
- | 绑定手机号 | 52e0352
- | 标题栏变化 | 3898cfe
- | 标题栏变化 | c0fcd9d
- | 标题栏角色栏全局任务组件新建 | 0500cb4
- | 插件参数处理调整 | a3e68d3
- | 插件数据获取 | 5b91bdc
- | 存token | b8a178d
- | 导入项目,更新项目 | 5e06adf
- | 导入项目后提示并打开项目详情页 | 410f527
- | 导入wbs | 1224fcb
- | 点击日历日期查询项目列表 | c458385
- | 定期任务面板骨架屏添加 | b2698c0
富文本插件 | 富文本插件demo测试 | ed3d644
- | 缓存修改 | 63e1f0d
- | 角色栏实现 | 94cd671
- | 距调整pc端 | 5069aa1
- | 面变化首页变化 | 5e860f1
- | 模拟接口测试 | 69e7931
- | 配置默认插件接口 | f0c177d
- | 全局插件及默认插件位置修改 | 6c80d08
- | 任务进行中状态数字 | 27b7326
- | 任务状态时间显示 | 56f5183
- | 日常任务插件调整 | c1881f9
- | 日历定位;合并 | ea3f937
- | 上传逻辑变化 | 3ff1dc2
- | 设置小红点 | 9316bcb
- | 时间基准线,默认插件 | a33ba1e
- | 时间轴界面 | 33927e9
- | 时间轴修改状态时提示框增加 | e841392
- | 适配小程序;小程序登录 | cefc0eb
- | 首页项目样式改变 | 8514c85
- | 提交到本地 | 9cbe411
- | 添加时间轴上下滚动 | 2b81bbc
- | 添加项目排序 | a0b491b
- | 添加子任务插件 子项目插件 | 7bda7e2
- | 细节调整,添加project-webview | 4d9050b
- | 向右箭头图标变化 | 8e9ca55
- | 项目列表, 项目url | 32e005b
- | 项目api url设置 | 6cd5245
- | 引入dayjs | 29b8b93
- | 字体大小更改 | 82cfdd4
- | api封装 | 7d4edfc
bind phone | 图形验证码;短信验证码;绑定手机号 | 93ffea2
- | cache indexedDB处理 | 3388967
@ -11,6 +52,7 @@
default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | ed1d87b
- | indexedDB | 687394e
mp | 兼容小程序,去除window,document等 | 9178255
- | network控制本地缓存的使用 | 858429e
phone-bind | 验证码validate | a427250
pinch | alloy finger实现图片的pinch放大缩小 | de01343
plugin | 插件添加了token及param参数 | aeb0292
@ -18,130 +60,89 @@
- | tall插件封装 | 1bcb920
task status | 任务状态切换未完 | 7ffd135
- | ws storage | 21b3a06
- | 上传逻辑变化 | 3ff1dc2
- | 任务状态时间显示 | 56f5183
- | 任务进行中状态数字 | 27b7326
- | 全局插件及默认插件位置修改 | 6c80d08
- | 向右箭头图标变化 | 8e9ca55
- | 字体大小更改 | 82cfdd4
- | 存token | b8a178d
- | 定期任务面板骨架屏添加 | b2698c0
富文本插件 | 富文本插件demo测试 | ed3d644
- | 导入wbs | 1224fcb
- | 导入项目,更新项目 | 5e06adf
- | 导入项目后提示并打开项目详情页 | 410f527
- | 引入dayjs | 29b8b93
- | 提交到本地 | 9cbe411
- | 插件参数处理调整 | a3e68d3
- | 插件数据获取 | 5b91bdc
- | 日历定位;合并 | ea3f937
- | 日常任务插件调整 | c1881f9
- | 时间基准线,默认插件 | a33ba1e
- | 时间轴修改状态时提示框增加 | e841392
- | 时间轴界面 | 33927e9
- | 标题栏变化 | 3898cfe
- | 标题栏变化 | c0fcd9d
- | 标题栏角色栏全局任务组件新建 | 0500cb4
- | 模拟接口测试 | 69e7931
- | 添加子任务插件 子项目插件 | 7bda7e2
- | 添加时间轴上下滚动 | 2b81bbc
- | 添加项目排序 | a0b491b
- | 点击日历日期查询项目列表 | c458385
- | 细节调整,添加project-webview | 4d9050b
- | 绑定手机号 | 52e0352
- | 缓存修改 | 63e1f0d
- | 角色栏实现 | 94cd671
- | 设置小红点 | 9316bcb
- | 距调整pc端 | 5069aa1
- | 适配小程序;小程序登录 | cefc0eb
- | 配置默认插件接口 | f0c177d
- | 面变化首页变化 | 5e860f1
- | 项目api url设置 | 6cd5245
- | 项目列表, 项目url | 32e005b
- | 首页项目样式改变 | 8514c85
### 🎨 代码样式
范围|描述|commitId
--|--|--
- | calendar注释 | a2ec112
- | indexedDB.js格式整理 | b0d3a36
- | 代码审查 | d75134c
- | 代码格式细节调整 | cb2532b
- | 代码审查 | d75134c
- | 格式细节调整 | b907a03
- | 更新代码 | 8c27e68
- | 更新代码 | 1f40a76
- | 任务快捷方式图标增加 | 4aba872
- | 修改角色样式 | 73e268e
- | 日常任务修改 | dfa7ee2
- | 删除插件携带的多余文件 | 0f392bb
- | 删除多余字段 | 5ae3973
- | 删除没用代码 | 34b20e1
- | 删除calendar中多余的console | e339eec
- | 删除console.log | 5064a38
- | 删除index中没用的alert代码 | 9c9eec7
- | 删除mock,console;upload添加loading | 99d42e2
- | 删除多余字段 | 5ae3973
- | 删除插件携带的多余文件 | 0f392bb
- | 删除没用代码 | 34b20e1
- | 添加插件数据 | 2f11b42
- | 图标修改 | 54bca09
- | 无基本变化 | 21ac4bb
- | 日常任务修改 | dfa7ee2
- | 更新代码 | 8c27e68
- | 更新代码 | 1f40a76
- | 格式细节调整 | b907a03
- | 添加插件数据 | 2f11b42
- | 组件新建 | 89c0035
- | 细节调整 | 2cfc09a
- | 修改角色样式 | 73e268e
- | 组件新建 | 89c0035
- | calendar注释 | a2ec112
- | indexedDB.js格式整理 | b0d3a36
### 🐛 Bug 修复
范围|描述|commitId
--|--|--
- | 1.时间轴数据渲染 2.时间基准线 | d643af2
- | api 存storage | 81032ba
ID1000343 | 解决向下预加载查询参数时间没+1颗粒度;以及滚动加载颗粒度写死的问题 | 940603a, closes #ID1000343
plugin | 插件解析机制完善 | 0f5a27d
project title | 项目标题修改; 切换角色移除script | 5c20017
roles | 修复默认显示不是我的角色的问题 | b69f94f
role | 切换角色的逻辑修正完善 | 4ae534f
task任务逻辑完善 | 减少初始global及regular的不必要请求 | bd4bd38
- | title.vue根据页面栈显示返回按钮;标题文本超出显示... | 0cbacf4
- | 上下滑动加载定期任务 | 4090d89
- | 上下滚动时间轴 | d533a01
- | 下拉加载定期任务传参,时间格式化修改 | 0b95a0e
- | 任务开始时间延迟插件 | 992a313
- | 修改main | 749ae9a
- | 修改定期任务状态0和4时不加载圆圈 | 30e352f
- | 修改小红点传参 | 87b20fd
- | 修改报错 | 531c14d
- | 修改接口路径 | df6acf2
- | 修改角色栏组件 | a54c601
- | 切换到默认项目角色没有激活状态的bug | 438d448
- | 切换日历时查询小红点 | 7091789
- | 插件bug解决 | 41257eb
- | 初始展示角色修改 | 2ac4053
- | 定期任务key值修改 | c6688db
- | 定期任务接口 | aa4981c
- | 定期任务插件 | 92b3254
- | 定期任务未加载时,显示空的时间轴并能上下滑动 | ce38093
- | 定期任务本地缓存和api赋值,未完成 | 5a10856
定期任务本地缓存和api赋值,未完成 | 定期任务本地缓存和api赋值,未完成 | b22a366
- | 定期任务插件 | 92b3254
- | 定期任务骨架屏修改 | 8ff72dd
- | 定期任务接口 | aa4981c
- | 定期任务未加载时,显示空的时间轴并能上下滑动 | ce38093
- | 定期任务key值修改 | c6688db
- | 骨架屏替换 | e9fdd71
- | 监听时间基本点 | 033fca0
- | 角色栏修改 | 19228d6
- | 角色显示状态修改 | 7d3b906
- | 解决时间轴报错 | da1eece
- | 平车演示临时去掉项目快捷方式的toast提示 | e0b2c23
- | 手动展开日常任务 | 0a4a622
- | 提示信息显示bug及日常任务收缩问题 | f2f06c5
- | 插件bug解决 | 41257eb
- | 收到消息修改任务状态 | c378063
- | 日历无任务时添加小绿点,时间轴刻度无任务不显示时分 | 0f90868
- | 日常任务html数据查验 | 880ce5c
- | 切换到默认项目角色没有激活状态的bug | 438d448
- | 切换日历时查询小红点 | 7091789
- | 任务开始时间延迟插件 | 992a313
- | 日常任务插件遍历时的key值修改 | cd26285
- | 日常任务插件面板高度修改 | 249f9e4
- | 时间轴上下滑动 | 4d0ae46
- | 时间轴上下滚动数据加载bug修改 | e82ede4
- | 日常任务html数据查验 | 880ce5c
- | 日历无任务时添加小绿点,时间轴刻度无任务不显示时分 | 0f90868
- | 上下滚动时间轴 | d533a01
- | 上下滑动加载定期任务 | 4090d89
- | 设置时间轴自动滚动到当前位置 | a3474f8
- | 时间轴插件 | 225d3cc
- | 时间轴无任务时时间刻度加载修改 | 4921672
- | 时间轴滚动位置修改 | 551da63
- | 时间轴骨架屏修改 | ca78d02
- | 监听时间基本点 | 033fca0
- | 角色显示状态修改 | 7d3b906
- | 角色栏修改 | 19228d6
- | 解决时间轴报错 | da1eece
- | 设置时间轴自动滚动到当前位置 | a3474f8
- | 时间轴滚动位置修改 | 551da63
- | 时间轴上下滚动数据加载bug修改 | e82ede4
- | 时间轴上下滑动 | 4d0ae46
- | 时间轴无任务时时间刻度加载修改 | 4921672
- | 收到消息修改任务状态 | c378063
- | 手动展开日常任务 | 0a4a622
- | 提示信息显示bug及日常任务收缩问题 | f2f06c5
- | 跳转详情页返回路径修改 | c5e17c0
- | 骨架屏替换 | e9fdd71
- | 下拉加载定期任务传参,时间格式化修改 | 0b95a0e
- | 修改报错 | 531c14d
- | 修改定期任务状态0和4时不加载圆圈 | 30e352f
- | 修改角色栏组件 | a54c601
- | 修改接口路径 | df6acf2
- | 修改小红点传参 | 87b20fd
- | 修改main | 749ae9a
- | api 存storage | 81032ba
ID1000343 | 解决向下预加载查询参数时间没+1颗粒度;以及滚动加载颗粒度写死的问题 | 940603a, closes #ID1000343
plugin | 插件解析机制完善 | 0f5a27d
project title | 项目标题修改; 切换角色移除script | 5c20017
role | 切换角色的逻辑修正完善 | 4ae534f
roles | 修复默认显示不是我的角色的问题 | b69f94f
task任务逻辑完善 | 减少初始global及regular的不必要请求 | bd4bd38
- | title.vue根据页面栈显示返回按钮;标题文本超出显示... | 0cbacf4
### 📝 文档
@ -153,53 +154,57 @@
### 🔧 测试
范围|描述|commitId
--|--|--
- | 暂时移除了jest浏览器配置 | 5088d01
- | 添加测试,测试utils/time.js的computeDurationText | e758010
- | 禁用任务开始操作 | b5425db
- | 添加测试,测试utils/time.js的computeDurationText | e758010
- | 暂时移除了jest浏览器配置 | 5088d01
### 🔨 代码重构
范围|描述|commitId
--|--|--
- | 界面样式调整 | 4367249
- | 任务状态重构 | 4693655
- | 删除多余的技术验证界面 | 542ae5b
- | 删除多余的weekmode store里的东西 | 0841fe0
- | 下滑时间轴添加备注 | 4fd20e3
- | 只保留project内容 | 7781c7b
- | 重构store分层 | 5f6fff8
calendar | 日历细节调整 | 1a8d6bf
- | project 代码健壮性完善 | a3202c5
store/home | 删除store/home | db8a3b4
tailwindcss | tailwindcss CDN引入;移除相关配置文件及包;开启treeShaking | 15485a0
task beginTime | 格式化任务开始时间 | fbc0301
template | eslint prettier sass uview tailwindcss | 9c966a1
tips | 修改任务状态方法重构 | b57d3ac
tip | 任务状态显示及tip组件数据的重构 | 78a5750
tips | 修改任务状态方法重构 | b57d3ac
title.vue | 移除测试的repeat; 样式细节调整 | c32d2bd
- | 下滑时间轴添加备注 | 4fd20e3
- | 任务状态重构 | 4693655
- | 删除多余的weekmode store里的东西 | 0841fe0
- | 删除多余的技术验证界面 | 542ae5b
- | 只保留project内容 | 7781c7b
- | 界面样式调整 | 4367249
- | 重构store分层 | 5f6fff8
### 🚀 性能优化
范围|描述|commitId
--|--|--
- | 1.时间轴筛选相同的时间替换数据 2.整理代码 | e082ccb
- | 测试接口 | 215e074
- | 插件查询及展示 | 4dba770
- | 角色栏文字颜色修改 | 215c6b3
- | 解决警告 | c932b09
- | 日历的更改 | 7353ac8
- | 小红点api缓存修改 | e992343
- | 修改代码格式 | 14123d7
- | 修改定期任务骨架屏高度 | 909a734
- | 小红点api缓存修改 | e992343
- | 插件查询及展示 | 4dba770
- | 整理代码 | 7a55315
- | 日历的更改 | 7353ac8
- | 测试接口 | 215e074
- | 组件文件夹新建 | 22bfe7b
- | 组件文件夹新建 | 17bb8c9
- | 组件文件夹新建 | 1421504
- | 角色栏文字颜色修改 | 215c6b3
- | 解决警告 | c932b09
### chore
范围|描述|commitId
--|--|--
- | 删除多余的构建的命令 | 3f4eb2f
- | 删除vuedragable及修改运行端口为9000 | c864f91
信息配置 | 配置eslint等配置 | 7421443
- | 修复不能build的问题 | 0b7b91e
- | api 封装 | 8dcb8a2
- | env host修改 | a79a4a5
- | merge globals | b0957cc
@ -209,10 +214,6 @@
pwa 小程序 | 移除了pwa,alloyFinger添加平台判断 | 875fab4
- | uview-ui | a9ea34b
v3.0.1 | tall api 地址从1.0改成了3.0 | db5afd5
信息配置 | 配置eslint等配置 | 7421443
- | 修复不能build的问题 | 0b7b91e
- | 删除vuedragable及修改运行端口为9000 | c864f91
- | 删除多余的构建的命令 | 3f4eb2f
范围|描述|commitId

2
package.json

@ -74,7 +74,6 @@
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^6.2.2",
"husky": "^3.0.9",
"jest": "^25.4.0",
"lint-staged": "^11.0.0",
"mini-types": "*",
"miniprogram-api-typings": "*",
@ -82,7 +81,6 @@
"postcss": "^7.0.36",
"postcss-comment": "^2.0.0",
"prettier": "^2.2.1",
"puppeteer": "^10.2.0",
"right-pad": "^1.0.1",
"sass-loader": "^8.0.2",
"vue-cli-plugin-commitlint": "~1.0.12",

316
src/components/Title/Title.vue

@ -1,6 +1,6 @@
<template>
<view>
<u-navbar class="overflow-hidden" :is-back="false">
<u-navbar :custom-back="onBack" class="overflow-hidden">
<view class="flex justify-start flex-1 px-3 font-bold min-0">
<view class="truncate">{{ project.name }}</view>
</view>
@ -11,22 +11,181 @@
<u-icon class="m-1" name="xuanxiang" custom-prefix="custom-icon" size="20px" @click="operation"></u-icon>
</view>
</u-navbar>
<view
class="mask"
v-if="maskShow"
@click="closeMask"
style="width: 100%; height: 100vh; z-index: 21; position: fixed; background: rgba(0, 0, 0, 0.1)"
></view>
<!-- 右上角 ... 弹窗 -->
<view class="popup" v-if="show">
<view class="flex" style="margin-bottom: 10px">
<u-icon name="plus-circle" color="#007aff" size="36" style="margin: 0 15px 3px 0"></u-icon>
<view @click="newprojects">新建项目</view>
</view>
<view class="flex">
<u-icon name="share" color="#007aff" size="32" style="margin: 0 15px 3px 0"></u-icon>
<view @click="share">分享项目</view>
</view>
</view>
<!-- 分享项目弹窗 -->
<view class="secondPopup flex justify-center" style="overflow: hidden" v-if="secondShow">
<view class="content">
<view class="popupTitle flex justify-center">创建分享链接</view>
<view>选择以什么角色分享项目</view>
<!-- 下拉多选 -->
<view>
<u-dropdown ref="uDropdown">
<u-dropdown-item :title="dropTitle">
<view class="slot-content" style="background-color: #ffffff; height: auto">
<div
class="multiple-choice flex flex-row justify-between"
v-for="(option, optionIndex) in options"
:key="optionIndex"
@click="change(optionIndex)"
>
<view v-model="option.value">{{ option.label }}</view>
<u-icon v-if="option.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon>
</div>
<u-button type="primary" @click="closeDropdown">确定</u-button>
</view>
</u-dropdown-item>
</u-dropdown>
</view>
<!-- 复制链接 -->
<view class="link flex items-center">
<view style="color: #afbed1; width: 80%; margin-left: 5px">{{ links }}</view>
<u-button style="border-radius: 0" type="primary" @click="copyPasteboard">复制链接</u-button>
</view>
<view @click="select">
<!-- 全选按钮 -->
<view class="flex" style="margin-top: 10px">
<view>
<u-checkbox-group>
<u-checkbox v-model="checked" @change="checkedAll"></u-checkbox>
</u-checkbox-group>
</view>
<view>已选择({{ this.quantity }})</view>
<view style="color: #f37378; margin-left: 20px">批量删除</view>
</view>
<!-- 多选框 -->
<view>
<u-checkbox-group class="checkboxs flex flex-1 items-center" v-for="(item, index) in list" :key="index">
<div class="flex-1 flex items-center">
<u-checkbox v-model="item.checked"></u-checkbox>
<u-avatar :src="item.src" size="55" style="background: #d8dce0; margin-right: 10px"></u-avatar>
<div style="width: 60%; font-size: 12px">
<div style="color: gray">{{ item.name }}</div>
<div style="color: #c4d0e1">{{ item.joinMethod }}</div>
</div>
</div>
<div style="font-size: 18px; color: #f37378">{{ item.role }}</div>
</u-checkbox-group>
</view>
</view>
</view>
</view>
<!-- 新建项目弹窗 -->
<NewProjects class="thirdPopup flex" v-if="newProjectsShow" />
</view>
</template>
<script>
import { mapGetters, mapState } from 'vuex';
import NewProjects from './components/NewProjects.vue';
export default {
name: 'ProjectTitle',
components: { NewProjects },
data() {
return { showBack: false };
return {
checked: false, //
show: false, // ...
newProjectsShow: false, //
secondShow: false, //
maskShow: false, //
dropTitle: '观众,干系人', //
links: 'https://kdocs.cn/l/cbs', //
quantity: 0, //
//
options: [
{
label: '观众',
value: 1,
dropdownShow: false,
status: false,
},
{
label: '距离优先',
value: 2,
dropdownShow: false,
status: false,
},
{
label: '价格优先',
value: 3,
dropdownShow: false,
status: false,
},
],
//
list: [
{
name: '冯老师',
src: '',
joinMethod: '文件创建者',
role: '观众',
checked: false,
disabled: false,
},
{
name: '马壮',
src: '',
joinMethod: '通过链接加入',
role: '干系人',
checked: false,
disabled: false,
},
{
name: '张野',
src: '',
joinMethod: '通过链接加入',
role: '观众',
checked: false,
disabled: false,
},
],
};
},
computed: {
...mapState('project', ['project']),
...mapGetters('user', ['userId']),
},
mounted() {
this.select;
},
created() {
this.select;
},
methods: {
//
closeDropdown() {
this.$refs.uDropdown.close();
},
//
onBack() {
// eslint-disable-next-line no-undef
const pages = getCurrentPages(); //
if (pages.length > 1) {
uni.navigateBack();
} else {
this.$u.route('/', { u: this.userId });
}
},
// LWBS
lwbs() {
// this.$t.ui.showToast('LWBS');
@ -42,13 +201,164 @@ export default {
//
operation() {
// this.$t.ui.showToast('');
this.show = !this.show;
},
//
newprojects() {
// ...
this.show = false;
//
this.maskShow = true;
//
this.newProjectsShow = true;
},
//
share() {
// ...
this.show = false;
//
this.maskShow = true;
//
this.secondShow = true;
},
//
closeMask() {
//
this.maskShow = false;
//
this.secondShow = false;
//
this.newProjectsShow = false;
},
//
change(optionIndex) {
console.log(optionIndex);
let arr = [...this.options];
//
arr[optionIndex].dropdownShow = !arr[optionIndex].dropdownShow;
//
this.dropTitle = arr[optionIndex].label;
let shows = '';
// arr
arr.map(val => {
if (val.dropdownShow === true) {
shows += val.label + ',';
}
});
this.options = [...arr];
// ','
this.dropTitle = shows.slice(0, shows.length - 1);
console.log(this.dropTitle);
// this.dropTitle = arr[value - 1].label;
},
//
copyPasteboard() {
uni.setClipboardData({
data: this.links,
success: function () {
console.log('链接复制成功');
},
});
},
//
checkedAll() {
this.list.map(val => {
val.checked = !this.checked;
});
},
//
select() {
this.quantity = 0;
this.list.forEach(val => {
if (val.checked == true) {
this.quantity++;
}
});
},
},
};
</script>
<style lang="scss" scoped>
.multiple-choice {
padding: 5px;
}
.secondPopup {
background: #ffffff;
position: fixed;
left: 6%;
top: 25%;
z-index: 33;
}
.thirdPopup {
background: #ffffff;
position: fixed;
left: 5.5%;
top: 10%;
z-index: 33;
}
.content {
width: 330px;
height: 330px;
border: 1px solid #b4b4b4;
// background: white;
padding: 15px;
}
.popupTitle {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
}
.popup {
width: 40%;
height: 100px;
background: #f2f2f2;
position: absolute;
right: 0;
z-index: 22;
padding: 15px;
}
.link {
height: 40px;
border: 1px solid #afbed1;
margin-top: 15px;
}
.checkboxs {
width: 100%;
}
/deep/ .u-slot-content {
min-width: 0;
}
/deep/.u-dropdown__menu__item > uni-view {
justify-content: space-between;
width: 100%;
flex-wrap: nowrap;
border: 1px solid #afbed1;
padding: 5px;
}
/deep/.u-dropdown__content__mask[data-v-01c0c507] {
/* background: rgba(0, 0, 0, 0.3); */
width: 100%;
}
/deep/.u-avatar[data-v-b36130f2] {
width: 30px;
height: 30px;
font-size: 12px;
}
/deep/.u-dropdown__content__mask {
display: none;
}
</style>

292
src/components/Title/components/NewProjects.vue

@ -0,0 +1,292 @@
<template>
<div style="padding: 15px; width: 330px">
<div class="form">
<!-- 项目名称 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>名称</div>
<u-input v-model="nameValue" :type="type" :border="border" />
</div>
<!-- 起止时间 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>起止-截止时间</div>
<u-input v-model="timeValue" :type="type" :border="border" />
</div>
<!-- 多选框 -->
<div class="flex justify-between items-center" style="border-bottom: 1px solid #dcdfe6; width: 100%">
<div>负责人</div>
<div class="" label="负责人" style="width: 85%">
<u-dropdown ref="uDropdown">
<u-dropdown-item :title="dropTitle" style="border: none">
<view class="slot-content" style="background-color: #ffffff; height: auto">
<div
class="multiple-choice flex flex-row justify-between"
v-for="(option, optionIndex) in options"
:key="optionIndex"
@click="change(optionIndex)"
>
<view v-model="option.value">{{ option.label }}</view>
<u-icon v-if="option.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon>
</div>
<u-button type="primary" @click="closeDropdown">确定</u-button>
</view>
</u-dropdown-item>
</u-dropdown>
</div>
</div>
<!-- 下拉图标 -->
<div class="flex justify-center" style="margin-top: 20px">
<u-icon v-if="arrow" name="arrow-down" size="28" @click="openDropdown"></u-icon>
<u-icon v-else name="arrow-up" size="28" @click="closeSecondDropdown"></u-icon>
</div>
<!-- 下拉框的内容 -->
<div v-if="show">
<!-- 描述 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>描述</div>
<u-input v-model="decripeValue" :type="type" :border="border" />
</div>
<!-- 所属项目 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>所属项目</div>
<div class="" style="position: relative; background: #fff">
<u-input v-model="projectValue" :type="type" :border="border" @click="isProjectShow" />
<div v-if="projectShow" class="projectBelong" @blur="projectShow = false">
<div v-for="project in projects" :key="project">
{{ project }}
</div>
</div>
</div>
</div>
<!-- 所属任务 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>所属任务</div>
<u-input v-model="taskValue" :type="type" :border="border" />
</div>
<!-- 上道工序 -->
<div class="flex items-center" style="border-bottom: 1px solid #dcdfe6">
<div>上道工序</div>
<u-input v-model="lastValue" :type="type" :border="border" />
</div>
<!-- 检查人多选框 -->
<div class="flex justify-between items-center" style="border-bottom: 1px solid #dcdfe6; width: 100%">
<div>检查人</div>
<div class="" label="检查人" style="width: 85%">
<u-dropdown ref="dropdown">
<u-dropdown-item :title="secondDropTitle" style="border: none">
<view class="slot-content" style="background-color: #ffffff; height: auto">
<div
class="multiple-choice flex flex-row justify-between"
v-for="(checkoutOption, Index) in checkoutOptions"
:key="Index"
@click="choose(Index)"
>
<view v-model="checkoutOption.value">{{ checkoutOption.label }}</view>
<u-icon v-if="checkoutOption.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon>
</div>
<u-button type="primary" @click="dropdownClosed">确定</u-button>
</view>
</u-dropdown-item>
</u-dropdown>
</div>
</div>
<!-- 是否是日常任务 -->
<div class="flex justify-between items-center" style="padding: 25px 0; border-bottom: 1px solid #adadad">
<div>是否日常任务</div>
<u-switch v-model="checked" size="28"></u-switch>
</div>
<div style="padding-top: 25px">
<div>交付物</div>
<u-input style="border-bottom: 1px solid #dcdfe6" placeholder="交付物名称1" :type="type" :border="border" />
<u-input style="border-bottom: 1px solid #dcdfe6" placeholder="交付物名称2" :type="type" :border="border" />
</div>
</div>
<u-button class="flex justify-center" style="margin-top: 20px" type="primary">提交</u-button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
projects: ['我是睡', '我叫什么', '我的名字是'],
title: 'tall1',
arrow: true,
show: false,
checked: false, //
nameValue: '', //
timeValue: '', //
decripeValue: '', //
projectValue: '', //
projectShow: false, //
taskValue: '', //
lastValue: '', //
type: 'text',
border: true,
dropTitle: '观众,干系人', //
secondDropTitle: '干系人', //
//
options: [
{
label: '观众',
value: 1,
dropdownShow: false,
status: false,
},
{
label: '距离优先',
value: 2,
dropdownShow: false,
status: false,
},
{
label: '价格优先',
value: 3,
dropdownShow: false,
status: false,
},
],
//
checkoutOptions: [
{
label: '观众',
value: 1,
dropdownShow: false,
status: false,
},
{
label: '距离优先',
value: 2,
dropdownShow: false,
status: false,
},
{
label: '价格优先',
value: 3,
dropdownShow: false,
status: false,
},
],
//
diliverables: [],
//
projectOptions: [
{
label: 'tall1',
value: 1,
},
{
label: 'tall2',
value: 2,
},
{
label: 'tall3',
value: 3,
},
],
};
},
methods: {
isProjectShow($event) {
console.log(this.projectValue);
console.log($event);
this.projectShow = true;
},
//
closeDropdown() {
this.$refs.uDropdown.close();
},
//
dropdownClosed() {
this.$refs.dropdown.close();
},
//
change(index) {
console.log(index);
let arr = [...this.options];
//
arr[index].dropdownShow = !arr[index].dropdownShow;
//
this.dropTitle = arr[index].label;
let shows = '';
// arr
arr.map(val => {
if (val.dropdownShow === true) {
shows += val.label + ',';
}
});
this.options = [...arr];
// ','
this.dropTitle = shows.slice(0, shows.length - 1);
console.log(this.dropTitle);
},
//
choose(index) {
console.log(index);
let arr = [...this.checkoutOptions];
//
arr[index].dropdownShow = !arr[index].dropdownShow;
//
this.secondDropTitle = arr[index].label;
let shows = '';
// arr
arr.map(val => {
if (val.dropdownShow === true) {
shows += val.label + ',';
}
});
this.checkoutOptions = [...arr];
// ','
this.secondDropTitle = shows.slice(0, shows.length - 1);
console.log(this.secondDropTitle);
// this.dropTitle = arr[value - 1].label;
},
//
// project(value) {
// console.log(value);
// this.title = this.projectOptions[value - 1].label;
// },
//
openDropdown() {
this.arrow = !this.arrow;
this.show = true;
},
//
closeSecondDropdown() {
this.arrow = !this.arrow;
this.show = false;
},
},
};
</script>
<style lang="scss" scoped>
.projectBelong {
height: auto;
background: #fff;
padding: 0 10px;
color: #c0c4cc;
position: absolute;
z-index: 55;
}
.form {
display: flex;
flex-direction: column;
width: 100%;
height: 550px;
overflow-y: scroll;
}
/deep/.u-input--border {
border: none;
}
/deep/.u-dropdown__menu__item > uni-view {
border: none !important;
padding: 5px;
}
</style>
Loading…
Cancel
Save