Commit 89b62ff1 authored by jiaxu.yan's avatar jiaxu.yan

Merge branch 'develop' into developer/yanjiaxu

# Conflicts:
#	src/views/setting/rules/components/dialog.vue
parents 82e43e53 a517510b
const Mock = require('mockjs')
const { param2Obj } = require('./utils')
const task = require('./task')
const user = require('./user')
const role = require('./role')
const article = require('./article')
const search = require('./remote-search')
const mocks = [
...user,
...role,
...article,
...search
]
const mocks = [...task]
// for front mock
// please use it cautiously, it will redefine XMLHttpRequest,
......@@ -20,7 +16,7 @@ function mockXHR() {
// mock patch
// https://github.com/nuysoft/Mock/issues/300
Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send
Mock.XHR.prototype.send = function() {
Mock.XHR.prototype.send = function () {
if (this.custom.xhr) {
this.custom.xhr.withCredentials = this.withCredentials || false
......@@ -32,7 +28,7 @@ function mockXHR() {
}
function XHR2ExpressReqWrap(respond) {
return function(options) {
return function (options) {
let result = null
if (respond instanceof Function) {
const { body, type, url } = options
......@@ -50,7 +46,11 @@ function mockXHR() {
}
for (const i of mocks) {
Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response))
Mock.mock(
new RegExp(i.url),
i.type || 'get',
XHR2ExpressReqWrap(i.response)
)
}
}
......
/**
* 参考https://github.com/nuysoft/Mock/wiki/Syntax-Specification
* */
module.exports = [
// get tasklist
{
url: '/tasklist',
type: 'get',
response: config => {
const temp = []
for (let i = 0; i < 10; i++) {
temp.push({
startTime: '@date',
missionNo: '@word',
tit: '一汽丰田体系审查',
owener: '@cname',
'costTime|0-12': 1,
'progress|0-100': 1
})
}
return {
rows: temp,
code: 200,
total: 10
}
}
}
]
......@@ -48,10 +48,11 @@ import VueMeta from 'vue-meta'
import DictData from '@/components/DictData'
import TalkItem from '@/components/TalkItem'
// if (process.env.NODE_ENV === 'production') {
// const { mockXHR } = require('../mock')
// mockXHR()
// }
// 使用mock模拟接口调用
if (process.env.NODE_ENV === 'development') {
const { mockXHR } = require('../mock')
mockXHR()
}
// 全局方法挂载
Vue.prototype.getDicts = getDicts
......
/* 任务处理路由js文件*/
import Layout from '@/layout'
export default [
......@@ -15,13 +14,26 @@ export default [
path: 'unprocessed-review',
component: () => import('@/views/processing/unprocessed-review/index'),
name: 'unprocessed-review',
meta: {title: '待办任务', activeMenu: '/processing/unprocessed-review'}
meta: {
title: '待办任务',
activeMenu: '/processing/unprocessed-review'
}
},
{
path: 'processed-review',
component: () => import('@/views/processing/processed-review/index'),
name: 'processed-review',
meta: {title: '已办任务', activeMenu: '/processing/processed-review'}
meta: { title: '已办任务', activeMenu: '/processing/processed-review' }
},
{
path: 'review-questionnaire',
component: () =>
import('@/views/processing/review-questionnaire/index'),
name: 'review-questionnaire',
meta: {
title: '审查问卷',
activeMenu: '/processing/review-questionnaire'
}
}
]
}
......
<template>
<!--已办审查平台页面-->
<div>已办审查平台页面</div>
<div>
已办审查平台页面
<div>
<el-button
v-hasPermi="['processing:review-questionnaire:index']"
size="mini"
type="primary"
icon="el-icon-edit"
plain
@click="handleScan()"
>查看
</el-button>
</div>
</div>
</template>
<!--js逻辑-->
<script>
......@@ -8,7 +21,12 @@ export default {
data() {
return {}
},
methods: {}
methods: {
/* 跳转查看页面*/
handleScan() {
this.$router.push({ path: '/processing/review-questionnaire' })
}
}
}
</script>
<!--样式-->
......
This diff is collapsed.
<template>
<!--待办审查平台页面-->
<div>待办审查平台页面</div>
<page-standard>
<div slot="tab">
<el-radio-group v-model="queryParams.type">
<el-radio-button
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio-button>
</el-radio-group>
</div>
<el-form
v-show="showSearch"
ref="queryForm"
:model="queryParams"
size="small"
:inline="true"
>
<el-form-item prop="status">
<el-input
v-model="queryParams.deptName"
placeholder="输入搜索关键词"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="status">
<el-date-picker
v-model="queryParams.deptName"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择任务状态"
clearable
>
<el-option
v-for="dict in dict.type.sys_job_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>查询</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
重置
</el-button>
</el-form-item>
</el-form>
<el-card v-for="(item, index) in tableData" :key="index" class="box-card">
<div class="card-cell">
<div class="cell-lable">
<i class="el-icon-timer"></i>
开始时间
</div>
<div class="cell-value">
{{ item.startTime ? item.startTime : '---' }}
</div>
</div>
<div class="card-cell">
<div class="cell-lable">任务编号</div>
<div class="cell-value">
{{ item.missionNo ? item.missionNo : '---' }}
</div>
</div>
<div class="card-cell">
<div class="cell-lable">任务名称</div>
<div class="cell-value">
{{ item.tit ? item.tit : '---' }}
</div>
</div>
<div class="card-cell">
<div class="cell-lable">任务组长</div>
<div class="cell-value">
<i class="el-icon-user"></i>
{{ item.owener ? item.owener : '---' }}
</div>
</div>
<div class="card-cell">
<div class="cell-lable">任务状态</div>
<div v-if="item.costTime === 0" class="cell-value">未开始</div>
<div v-else class="cell-value yellow">
已耗时({{ item.costTime }}小时)
</div>
</div>
<div class="card-cell">
<div class="cell-lable">审查问卷</div>
<div class="cell-value">
<el-link type="primary">填写问卷</el-link>
</div>
</div>
<div class="card-cell">
<div class="cell-lable">完成进度</div>
<el-progress
class="cell-progress"
:stroke-width="12"
:percentage="item.progress"
></el-progress>
</div>
<div class="card-cell">
<div class="cell-lable"></div>
<div class="cell-value">
<el-button
type="primary"
icon="el-icon-arrow-right"
circle
title="任务详情"
></el-button>
<el-button
type="warning"
icon="el-icon-s-promotion"
circle
title="移交任务"
></el-button>
<el-button
type="success"
icon="el-icon-s-management"
circle
title="预览报告"
></el-button>
<el-button
type="success"
icon="el-icon-document"
circle
title="预览企业留档文件"
></el-button>
<el-button
type="success"
icon="el-icon-folder"
circle
title="车企文件库"
></el-button>
<el-button
type="danger"
icon="el-icon-video-play"
circle
title="开始"
></el-button>
</div>
</div>
</el-card>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.size"
@pagination="loadData"
>
</pagination>
</page-standard>
</template>
<!--js逻辑-->
<script>
import page from '@/mixins/page'
export default {
dicts: ['sys_job_status', 'sys_scene_type', 'sys_detailed_classification'],
mixins: [page],
data() {
return {}
return {
listUrl: '/tasklist',
showSearch: true,
tableData: []
}
},
watch: {},
methods: {}
}
</script>
<!--ui样式-->
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.card-cell {
color: rgb(153, 153, 153);
height: 80px;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-items: flex-start;
justify-content: space-around;
}
.box-card {
margin-bottom: 31px;
::v-deep .el-card__body {
display: flex;
justify-content: space-between;
}
::v-deep .el-link.is-underline:after {
content: '';
position: absolute;
left: 0;
right: 0;
height: 0;
bottom: 0;
border-bottom: 1px solid #1890ff;
}
.cell-progress {
width: 200px;
}
.cell-value.yellow {
color: #fea623;
}
}
</style>
......@@ -107,10 +107,14 @@ export default {
this.$emit('close')
},
handleConfirm() {
<<<<<<< HEAD
this.$refs['form'].validate(valid => {
if (valid) {
}
})
=======
this.$refs['form'].validate(valid => {})
>>>>>>> develop
}
}
}
......
......@@ -5,31 +5,31 @@
<el-button
size="mini"
:type="formType == 1 ? 'primary' : 'default'"
@click="formType = 1"
round
>体系审查任务</el-button
>
@click="formType = 1"
>体系审查任务
</el-button>
<el-button
size="mini"
:type="formType == 2 ? 'primary' : 'default'"
@click="formType = 2"
round
>车型审查任务</el-button
>
@click="formType = 2"
>车型审查任务
</el-button>
<el-button
size="mini"
:type="formType == 3 ? 'primary' : 'default'"
@click="formType = 3"
round
>车型检验任务</el-button
>
@click="formType = 3"
>车型检验任务
</el-button>
</el-form-item>
<div class="subtitle">基础信息</div>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="任务编码" prop="status">
<el-input v-model="model.status" placeholder="请输入" clearable />
<el-form-item label="任务编号" prop="no">
<el-input v-model="model.no" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -38,10 +38,10 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务状态" prop="status">
<el-form-item label="任务状态" prop="taskStatus">
<el-select
v-model="model.taskStatus"
style="width: 100%"
v-model="model.status"
placeholder="请选择"
clearable
>
......@@ -99,59 +99,82 @@
</el-col>
</el-row>
<div class="subtitle">小组信息</div>
<!-- :default-sort="{ prop: 'createTime', order: 'descending' }" -->
<el-table
style="width: 100%; min-height: 50vh"
border
:default-sort="{ prop: 'createTime', order: 'descending' }"
v-loading="loading"
style="width: 100%"
border
:data="tableData"
>
<el-table-column width="100" label="序号" sortable align="center">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
<el-table-column label="姓名" align="left" prop="name">
<template slot-scope="{ row }">
<span v-if="row.name !== ''">{{ row.name }}</span>
<el-select
v-else
v-model="row.name"
placeholder="请选择"
@change="handleNameChange"
>
<el-option
v-for="(item, index) in userList"
:key="index"
:label="item.name"
:value="item.name"
>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="left"
sortable
prop="createTime"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
<el-table-column label="组内角色" align="left" prop="role">
<template slot-scope="{ row }">
<span v-if="row.name === ''">-</span>
<span v-else>{{ row.role }}</span>
</template>
</el-table-column>
<el-table-column label="所属部门" align="left" prop="dept">
<template slot-scope="{ row }">
<span v-if="row.name === ''">-</span>
<span v-else>{{ row.dept }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="left"
sortable
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-hasPermi="['setting:rules:update']"
size="mini"
type="primary"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['setting:rules:update']"
plain
>修改</el-button
@click="handleUpdate(scope.row)"
>
修改
</el-button>
<el-button
v-hasPermi="['setting:rules:delete']"
size="mini"
type="danger"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['setting:rules:delete']"
plain
>删除</el-button
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加小组成员 -->
<el-button
class="add-number"
icon="el-icon-circle-plus-outline"
@click="handleAddNumber"
>添加小组成员</el-button
>
<div class="subtitle">报告信息</div>
<div class="subtitle" style="margin-top: 20px">报告信息</div>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="样品名称" prop="status">
......@@ -185,8 +208,8 @@
<el-col :span="8">
<el-form-item label="送样日期 " prop="status">
<el-date-picker
style="width: 100%"
v-model="model.status"
style="width: 100%"
type="date"
placeholder="选择日期"
>
......@@ -202,8 +225,8 @@
<el-col :span="8">
<el-form-item label="生产日期 " prop="status">
<el-date-picker
style="width: 100%"
v-model="model.status"
style="width: 100%"
type="date"
placeholder="选择日期"
>
......@@ -219,8 +242,8 @@
<el-col :span="8">
<el-form-item label="检验项目" prop="status">
<el-select
style="width: 100%"
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
......@@ -241,27 +264,27 @@
type="primary"
plain
size="mini"
@click="handleAdd"
v-hasPermi="['setting:rules:add']"
style="width: 120px"
>暂存</el-button
>
@click="handleSave"
>暂存
</el-button>
<el-button
type="primary"
size="mini"
@click="handleAdd"
v-hasPermi="['setting:rules:add']"
style="width: 120px"
>发布</el-button
>
@click="handleAdd"
>发布
</el-button>
</div>
</page-standard>
</template>
<script>
export default {
dicts: ['sys_task_status', 'sys_pro'],
data() {
return {
formType: 1,
// 新增/保存 - 对象
model: {},
loading: false,
tableData: [],
......@@ -273,11 +296,50 @@ export default {
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
}
},
userList: [
{ name: '小明', role: '组长', dept: '第一部门' },
{ name: '小华', role: '组员', dept: '第一部门' },
{ name: '小三', role: '组员', dept: '第一部门' },
{ name: '小四', role: '组员', dept: '第一部门' },
{ name: '小五', role: '组员', dept: '第一部门' }
]
}
},
dicts: ['sys_task_status', 'sys_pro'],
methods: {
/**
* 小组信息修改
* @param row 行内信息
*/
handleUpdate(row) {},
/**
* 小组信息删除
* @param row 行内信息
*/
handleDelete(row) {},
/**
* 添加小组成员点击按钮
*/
handleAddNumber() {
console.log('aaa', this.tableData)
// 检验
if (this.tableData.length >= 1) {
const lastObj = this.tableData[this.tableData.length - 1]
if (lastObj.name === '') {
this.$message.error('请填写完此成员信息')
return
} else {
this.tableData.push({ name: '' })
}
} else {
this.tableData.push({ name: '' })
}
},
handleNameChange(value) {
const obj = this.userList.find(item => item.name === value)
this.tableData[this.tableData.length - 1].dept = obj.dept
this.tableData[this.tableData.length - 1].role = obj.role
},
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw)
},
......@@ -292,8 +354,28 @@ export default {
this.$message.error('上传头像图片大小不能超过 2MB!')
}
return isJPG && isLt2M
},
// 保存
handleAdd() {
this.$refs.form.validate(valid => {
if (valid) {
console.log('aaaa')
}
})
},
// 暂存
handleSave() {
this.$refs.form.validate(valid => {
if (valid) {
console.log('aaaa')
}
})
}
}
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.add-number {
width: 100%;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment