Merge remote-tracking branch 'origin/master'

This commit is contained in:
wangzhijiang
2022-05-19 21:49:55 +08:00
32 changed files with 1194 additions and 350 deletions
@@ -119,6 +119,7 @@ public class SysCategoryController {
public Result<SysCategory> add(@RequestBody SysCategory sysCategory) {
Result<SysCategory> result = new Result<SysCategory>();
try {
sysCategory.setName(sysCategory.getName().replace(" ",""));
sysCategoryService.addSysCategory(sysCategory);
result.success("添加成功!");
} catch (Exception e) {
@@ -141,6 +142,7 @@ public class SysCategoryController {
if(sysCategoryEntity==null) {
result.error500("未找到对应实体");
}else {
sysCategory.setName(sysCategory.getName().replace(" ",""));
sysCategoryService.updateSysCategory(sysCategory);
result.success("修改成功!");
}
@@ -408,6 +408,8 @@ public class SysDictController {
sysDict.setCreateTime(new Date());
sysDict.setDelFlag(CommonConstant.DEL_FLAG_0);
sysDict.setDictName(sysDict.getDictName().replace(" ",""));
sysDictService.save(sysDict);
}
result.success("保存成功!");
@@ -100,6 +100,7 @@ public class SysDictItemController {
}
}else {
try {
sysDictItem.setItemText(sysDictItem.getItemText().replace(" ",""));
sysDictItem.setCreateTime(new Date());
sysDictItem.setDelFlag(CommonConstant.DEL_FLAG_0);
sysDictItem.setItemValue(UUID.randomUUID().toString().replace("-", ""));
@@ -135,6 +136,7 @@ public class SysDictItemController {
result.error500("固定字段,不可删除");
} else {
sysDictItem.setUpdateTime(new Date());
sysDictItem.setItemText(sysDictItem.getItemText().replace(" ",""));
boolean ok = sysDictItemService.updateById(sysDictItem);
if (ok) {
result.success("编辑成功!");
@@ -1,25 +1,26 @@
package com.jero.modules.project.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.project.entity.ProjectNameInfoEO;
import com.jero.modules.project.service.IProjectNameInfoEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.project.entity.ProjectNameInfoEO;
import com.jero.modules.project.service.IProjectNameInfoEOService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
@@ -167,4 +168,15 @@ public class ProjectNameInfoEOController extends JeroController<ProjectNameInfoE
return super.importExcel(request, response, ProjectNameInfoEO.class);
}
/**
* 接收space系统数据
*
* @return
*/
@AutoLog(value = "项目名信息表-space")
@ApiOperation(value="项目名信息表-space", notes="项目名信息表-space")
@RequestMapping(value = "/getSign", method = RequestMethod.POST)
public String getSign() {
return projectNameInfoEOService.getYapiInfo();
}
}
@@ -1,21 +1,18 @@
package com.jero.modules.project.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
@@ -66,4 +63,9 @@ public class ProjectNameInfoEO implements Serializable {
@ApiModelProperty(value = "项目名称")
private java.lang.String projectName;
/**年款名称*/
@Excel(name = "年款名称", width = 15)
@ApiModelProperty(value = "年款名称")
private java.lang.String yearName;
}
@@ -58,4 +58,6 @@ public interface IProjectNameInfoEOService extends IService<ProjectNameInfoEO> {
* @return
*/
List<ProjectNameInfoEO> queryList();
String getYapiInfo();
}
@@ -1,12 +1,15 @@
package com.jero.modules.project.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.project.entity.ProjectNameInfoEO;
import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.service.IProjectNameInfoEOService;
import com.jero.modules.space.service.SpaceServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
* @Description: 项目名信息表
@@ -16,7 +19,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
*/
@Service
public class ProjectNameInfoEOServiceImpl extends ServiceImpl<ProjectNameInfoEOMapper, ProjectNameInfoEO> implements IProjectNameInfoEOService {
@Autowired
private SpaceServiceImpl spaceService;
/**
* 保存
*
@@ -86,4 +90,178 @@ public class ProjectNameInfoEOServiceImpl extends ServiceImpl<ProjectNameInfoEOM
public List<ProjectNameInfoEO> queryList() {
return list();
}
@Override
public String getYapiInfo(){
String sign ="";
try {
// sign = spaceService.getSign();
String resultData = "{\n" +
" \"resultData\": [\n" +
" {\n" +
" \"modelCode\": \"ES8_00\",\n" +
" \"modelName\": \"ES8\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt1\",\n" +
" \"softwarePltName\": \"NT1\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f.e\",\n" +
" \"yearName\": \"G1.F.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_my2018\",\n" +
" \"yearName\": \"MY2018\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" {\n" +
" \"modelCode\": \"FURY_00\",\n" +
" \"modelName\": \"FURY\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt1\",\n" +
" \"softwarePltName\": \"NT1\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.6\",\n" +
" \"yearName\": \"G1.6\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"FORCE_00\",\n" +
" \"modelName\": \"FORCE\",\n" +
" \"hardwarePltCode\": \"mhp_npb\",\n" +
" \"hardwarePltName\": \"NPB\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.6\",\n" +
" \"yearName\": \"G1.6\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"Gemini_00\",\n" +
" \"modelName\": \"Gemini\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"Pegasus_00\",\n" +
" \"modelName\": \"Pegasus\",\n" +
" \"hardwarePltCode\": \"mhp_npc\",\n" +
" \"hardwarePltName\": \"NPC\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_G1.1.RH\",\n" +
" \"yearName\": \"G1.1.RH\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"resultCode\": \"WL-0000\",\n" +
" \"resultDesc\": \"Success\"\n" +
"}";
} catch (Exception e) {
e.printStackTrace();
}return sign;
}
}
@@ -0,0 +1,26 @@
package com.jero.modules.space.service;
import java.io.IOException;
public interface ISpaceService {
/**
* 获取token
* @return
* @throws IOException
*/
// String getTenantAccessToken() throws IOException;
/**
* 批量发送消息
* @param userIds 用户域账号,对应数据库字段:third_id
* @param message 消息内容
* @param title 消息类型
* @param backUrl 消息内容中的跳转链接
* @return
* @throws IOException
*/
// String batchSendMessage(String[] userIds, String message, String title, String backUrl) throws IOException;
}
@@ -0,0 +1,91 @@
package com.jero.modules.space.service;
import cn.hutool.http.HttpRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.security.MessageDigest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class SpaceServiceImpl implements ISpaceService {
@Value("${Space.appId}")
private String appId;
@Value("${Space.appSecret}")
private String appSecret;
@Value("${Space.domainUrl}")
private String domainUrl;
/**
* 生成签名
*@param map 参数
*@param secretKey 加签密钥
*@return String
*@throws Exception if secretKey is Empty
*/
public static String sign(Map<String, Object> map, String secretKey) throws Exception {
if (StringUtils.isEmpty(secretKey)) {
throw new Exception("secretKey can not be empty");
}
StringBuilder contentBuffer = new StringBuilder();
Object[] signParamArray = map.keySet().toArray();
Arrays.sort(signParamArray);
for (Object key : signParamArray) {
Object value = map.get(key);
if (!"digest".equals(key) && value != null && !value.equals("")) {
contentBuffer.append(key + "=" + value + "&");
}
}
String sign = contentBuffer.substring(0, contentBuffer.length() - 1) + secretKey;
return Md5(sign, "utf-8");
}
public static String Md5(String plainText, String encoding) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes(encoding));
byte b[] = md.digest();
return byte2hex(b);
}
public static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs.toUpperCase();
}
public String getSign() throws Exception {
Map<String,Object> paramMap = new HashMap<String, Object>();
paramMap.put("bizData", "{\"module\":\"GRP\"}");//业务参数
paramMap.put("timestamp", String.valueOf(System.currentTimeMillis()));//请求时间
paramMap.put("appId", appId);//在Program Space中注册的appId
String sign = sign(paramMap,appSecret);//签名字符串
paramMap.put("sign",sign);//签名字符串
// String response = HttpUtil.post(domainUrl, paramMap);
String response = HttpRequest.post(domainUrl)
.header("Content-Type", "application/x-www-form-urlencoded")
.form(paramMap)//表单内容
.timeout(20000)//超时,毫秒
.execute().body();
// String response = HttpRequestUtil.getResponseOfPOST(domainUrl, headerMap, null);
return response;
}
}
@@ -85,7 +85,7 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
}else {//设置文档拆分-表id
onlCgformTag.setCgformHeadId(FileTableIdEnum.FILE_SPLIT_ID.getValue());
}
onlCgformTag.setDbFieldTxt(onlCgformTag.getDbFieldTxt().replace(" ",""));
onlCgformTag.setDbIsKey(Integer.valueOf(YesOrNoEnum.NO.getValue()));
onlCgformTag.setDbIsNull(Integer.valueOf(YesOrNoEnum.YES.getValue()));
//onlCgformTag.setDbPointLength(0); //默认为0
@@ -147,6 +147,7 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
onlCgformTag.setDbLength(2000); // 多选默认设置为2000,即可选择2000/36=55个属性
}
}
onlCgformTag.setDbFieldTxt(onlCgformTag.getDbFieldTxt().replace(" ",""));
onlCgformTag.setIsDelete(CommonConstant.DEL_FLAG_0);
onlCgformTag.setDbIsKey(Integer.valueOf(YesOrNoEnum.NO.getValue()));
onlCgformTag.setDbIsNull(Integer.valueOf(YesOrNoEnum.YES.getValue()));
@@ -404,3 +404,28 @@ opensso:
clientId: 100679
clientSecret: CDf2D9404C6ac1B0f7c3e3845ae0282a
redirectUri: http%3A%2F%2F139.9.235.66%3A8010
---
## space系统
Space:
# dev
# appId: PMP16517425636482D4A
# appSecret: 6a689580-bf3a-47ee-b3c5-a16d2312760d
# domainUrl: https://api-plm-portal-dev.nioint.com/api/v1/plm-portal-middle-integration
# test
appId: PMP16521484118670676
appSecret: 4cf1b271-0c12-443d-964c-e61726b4ae0e
domainUrl: https://api-plm-portal-test.nioint.com/api/v1/plm-portal-middle-integration
# stg
# appId: PMP1652840272275F20C
# appSecret: fbf65763-a273-4df5-8a91-ef4db6d6e315
# domainUrl: https://api-plm-portal-stg.nioint.com/api/v1/plm-portal-middle-integration
# prod
# appId: PMP1652840319523B159
# appSecret: d3bf6e69-0726-42ee-91bd-0441a8f6ccdf
# domainUrl: https://api-plm-portal.nioint.com/api/v1/plm-portal-middle-integration
+2
View File
@@ -563,6 +563,7 @@ module.exports = {
batSetting: 'batch setting',
selectDirectoryTerms: 'please select the directory location to add terms',
StandardBreakdown: 'Standard breakdown',
OnlyWordItem: 'Non GSO file type, PDF file cannot be split',
OnlyWord: 'only word files can be imported',
labelAreaDeleted: 'If it is deleted, all label items under the display area will be deleted',
searchInResults: 'Search in results',
@@ -855,4 +856,5 @@ module.exports = {
confirmOperation:'Confirm Operation',
sponsorReview:'Sponsor review',
fillInProjectDelivery:'Fill in project delivery',
Resubmit:'Resubmit',
}
+2
View File
@@ -569,6 +569,7 @@ module.exports = {
documentSplitTemplate: '文档拆分模板',
batSetting: '批量设置',
selectDirectoryTerms: '请选择添加条款的目录位置',
OnlyWordItem: '非GSO文件类型,不能拆分pdf文件',
OnlyWord: '只能导入word文件',
labelAreaDeleted: '若进行删除则该展示区域下标签项都将被删除',
StandardBreakdown: '标准分解单',
@@ -860,4 +861,5 @@ module.exports = {
confirmOperation:'确认操作',
sponsorReview:'发起人审查',
fillInProjectDelivery:'填写工程交付',
Resubmit:'重新提交',
}
@@ -0,0 +1,247 @@
<template>
<div class='diolag-area'>
<a-spin :spinning='spinLoading'>
<a-form-model
class='tag-module'
ref='ruleForm'
:model='form'
:rules='rules'
:label-col='labelCol'
:wrapper-col='wrapperCol'
>
<a-row :gutter='24'>
<a-col :span='9'>
<a-form-model-item ref='paramsTemplateName' :label="$t('fullName')" prop='paramsTemplateName'>
<a-input
v-model='form.realname' />
</a-form-model-item>
</a-col>
<a-col :span='9'>
<a-form-model-item ref='paramsTemplateName' :label="$t('accountNumber')" prop='paramsTemplateName'>
<a-input
v-model='form.workNo' />
</a-form-model-item>
</a-col>
<a-col :span='6'>
<a-button class='box-button' type='primary' @click='searchQuery'>{{ $t('query') }}</a-button>
<a-button class='box-button' style='margin-left: 8px' @click='searchReset'>{{ $t('reset') }}</a-button>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<a-table
class='table-area'
ref='table'
size='middle'
rowKey='id'
:columns='columns'
:dataSource='areaTable'
:pagination='false'
:loading='loading'
:scroll='{x: 600}'
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
@change='handleTableChange'>
</a-table>
<div class="page">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
<div class='drawer-bootom-button'>
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
</div>
</div>
</template>
<script>
import { putAction, postAction, getAction, deleteAction } from '@/api/manage'
import axios from 'axios'
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
export default {
name: 'diolagArea',
components: {},
data() {
return {
token:Vue.ls.get(ACCESS_TOKEN),
title: this.$t('add'),
total: 0,
selectedRowKeysDate: {},
loading: false,
editId: '',
columns: [
{
title: this.$t('fullName'),
dataIndex: 'realname',
key: 'showArea',
align: 'center',
ellipsis: true
},
{
title: this.$t('accountNumber'),
align: 'center',
dataIndex: 'username',
ellipsis: true
}
],
newVisible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 14 }
},
form: {},
rules: {},
areaTable: [],
flag: false, //表单提交标识
spinLoading: false,
confirmLoading: false,
selectedRowKeys: [],
pageNo: 1,
pageSize: 10
}
},
props: {
selectedRowKeysArray: {
type: String,
default: '',
require: true
}
},
mounted() {
this.loadData()
},
methods: {
pageOnChange(page, pageSize) {
this.pageNo = page
this.loadData()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.loadData()
},
loadData() {
this.loading = true
let params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.form
}
getAction(`sys/user/page`, params).then(res => {
if (res.success) {
this.areaTable = [...res.result.records]
this.total = res.result.total
}
}).finally(() => {
this.loading = false
})
},
searchQuery() {
this.loadData()
},
searchReset() {
this.form = {}
this.loadData()
},
handleCancel() {
this.$emit('areaVisible', false)
},
onSelectChange(selectedRowKeys, selectedRowKeysDate) {
this.selectedRowKeysDate = selectedRowKeysDate
this.selectedRowKeys = selectedRowKeys
},
handleTableChange(val) {
},
//新增
handleSubmit() {
let _this = this
if (this.selectedRowKeys.length == 0) {
this.$message.warning(this.$t('pleaseSelectData'))
} else if (this.selectedRowKeys.length > 1) {
this.$message.warning(this.$t('OnlyOneSelected'))
} else {
let param = {ids: this.selectedRowKeysArray, projectId: this.$route.query.id, dre:this.selectedRowKeysDate[0].username }
axios({
url: '/jero-boot/params/collectManifest/updateDreBatch',
method: 'post',
data: param,
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Access-Token':_this.token
}
})
.then( (res) =>{
if (res.data.success) {
_this.$message.success(res.data.result)
_this.loadData()
this.$emit('areaVisibleAssignedbyflag', false)
}else{
_this.$message.warning(res.data.result)
}
})
.catch( (error) =>{
console.log(error);
});
}
}
}
}
</script>
<style lang='less' scoped>
@import '~@assets/less/common.less';
.diolag-area {
.table-area {
margin: 20px 0;
.action-edit {
margin-right: 10px;
}
}
.table-del {
color: red;
}
}
.drawer-bootom-button{
display: flex;
justify-content: center;
}
</style>
<style lang='less'>
.area-module {
.ant-modal-wrap {
.ant-modal {
.ant-modal-content {
.ant-modal-footer {
text-align: center;
}
}
}
}
}
.page{
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
}
</style>
@@ -103,19 +103,18 @@ export default {
},
handleTableChange(val) {
},
//新增
//保存
handleSubmit() {
let _this = this
let param = {ids: this.selectedRowKeysArray, deadline: `${this.pickerDate}`, }
postAction('/params/collectManifest/updateDeadlineBatch', param).then((res) => {
if (res.success) {
this.loadData()
this.$emit('areaVisibleTaskCutOffTimeflag', false)
this.$message.success(res.message)
} else {
this.$message.warning(res.message)
}
})
postAction('/params/collectManifest/updateDeadlineBatch', param).then((res) => {
if (res.success) {
this.$emit('areaVisibleTaskCutOffTimeflag', false)
this.$message.success(res.message)
} else {
this.$message.warning(res.message)
}
})
},
onChange(val) {
this.pickerDate = moment(val).format('YYYY-MM-DD HH:mm:ss')
@@ -220,36 +220,70 @@
if (file.file_name) {
let name = file.file_name.split('.')
let nameSuffix = name[name.length - 1]
if (nameSuffix.toLowerCase() === 'doc'||nameSuffix.toLowerCase() === 'docx'||nameSuffix.toLowerCase() === 'pdf') {
let params = {
attId: file.id,
title: file.title,
fileName:file.file_name,
serialNumber: file.serial_number,
connectId: file.connect_id,
fileGroup: this.fileGroup,
fileType:file.text_info
if(this.fileGroup === 'GSO') {
if (nameSuffix.toLowerCase() === 'doc'||nameSuffix.toLowerCase() === 'docx'||nameSuffix.toLowerCase() === 'pdf') {
let params = {
attId: file.id,
title: file.title,
fileName:file.file_name,
serialNumber: file.serial_number,
connectId: file.connect_id,
fileGroup: this.fileGroup,
fileType:file.text_info
}
if(!this.submitFlag){
this.submitFlag=true
postAction(`split/sarFileSplitInfo/add`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset')
this.visible = false;
this.$emit('visible', false)
} else {
this.$message.warning(res.message)
}
}).finally(()=>{
this.submitFlag =false
})
this.$emit('exportVisible',true)
}
} else {
this.$message.warning(this.$t('OnlyWord'))
}
if(!this.submitFlag){
this.submitFlag=true
postAction(`split/sarFileSplitInfo/add`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset')
this.visible = false;
this.$emit('visible', false)
} else {
this.$message.warning(res.message)
}
}).finally(()=>{
this.submitFlag =false
})
this.$emit('exportVisible',true)
}
} else {
this.$message.warning(this.$t('OnlyWord'))
if (nameSuffix.toLowerCase() === 'doc'||nameSuffix.toLowerCase() === 'docx') {
let params = {
attId: file.id,
title: file.title,
fileName:file.file_name,
serialNumber: file.serial_number,
connectId: file.connect_id,
fileGroup: this.fileGroup,
fileType:file.text_info
}
if(!this.submitFlag){
this.submitFlag=true
postAction(`split/sarFileSplitInfo/add`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset')
this.visible = false;
this.$emit('visible', false)
} else {
this.$message.warning(res.message)
}
}).finally(()=>{
this.submitFlag =false
})
this.$emit('exportVisible',true)
}
} else {
this.$message.warning(this.$t('OnlyWordItem'))
}
}
}
}
@@ -40,7 +40,7 @@
:triggerChange="false" :dictCode="'state'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="12" :sm="24">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
@@ -265,8 +265,7 @@
}
.title-text {
width: 20%;
min-width: 110px;
width: 33px;
color: #000F16;
display: inline-block;
font-weight: 500;
@@ -281,9 +280,8 @@
.box-input {
display: inline-block;
width: 70%;
width: 100%;
height: 38px;
margin-top: 2px;
}
.box-button {
@@ -55,13 +55,17 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="'WVTA ID'">WVTA ID</span>
<span class="title-text-text"
:title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
</div>
<a-form-model-item class="itemModel" prop="wvtaId">
<a-input class="box-input"
:disabled="false"
v-model="formInline.wvtaId"
:placeholder="$t('PleaseEnter')+'WVTA ID'"/>
<a-form-model-item class="itemModel-multi" prop="region">
<!-- <a-input class="box-input"-->
<!-- :disabled="true"-->
<!-- v-model="formInline.region_dictText"/>-->
<j-multi-select-tag class="box-input" v-model="formInline.region"
:placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
@@ -117,6 +121,24 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('implementationCategory')">{{$t('implementationCategory')}}</span>
</div>
<a-form-model-item class="itemModel" prop="implementType">
<j-dict-select-tag class="box-input" v-model="formInline.implementType"
:disabled="disabled"
@input="handleInput('implementType')"
:placeholder="$t('PleaseSelect')+$t('implementationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'implement_type'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -134,8 +156,6 @@
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -154,6 +174,21 @@
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="'WVTA ID'">WVTA ID</span>
</div>
<a-form-model-item class="itemModel" prop="wvtaId">
<a-input class="box-input"
:disabled="false"
v-model="formInline.wvtaId"
:placeholder="$t('PleaseEnter')+'WVTA ID'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -171,6 +206,39 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('certificationLevel')">{{$t('certificationLevel')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationRank">
<j-dict-select-tag class="box-input" v-model="formInline.attestationRank"
:disabled="disabled"
@input="handleInput('attestationRank')"
:placeholder="$t('PleaseSelect')+$t('certificationLevel')"
:type="'select'"
:triggerChange="false" :dictCode="'attestation_rank'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('applicableSupplement')">{{$t('applicableSupplement')}}</span>
</div>
<a-form-model-item class="itemModel" prop="applicableSupplement">
<a-input class="box-input"
:disabled="false"
v-model="formInline.applicableSupplement"
:placeholder="$t('PleaseEnter')+$t('applicableSupplement')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
@@ -209,74 +277,6 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('certificationLevel')">{{$t('certificationLevel')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationRank">
<j-dict-select-tag class="box-input" v-model="formInline.attestationRank"
:disabled="disabled"
@input="handleInput('attestationRank')"
:placeholder="$t('PleaseSelect')+$t('certificationLevel')"
:type="'select'"
:triggerChange="false" :dictCode="'attestation_rank'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('implementationCategory')">{{$t('implementationCategory')}}</span>
</div>
<a-form-model-item class="itemModel" prop="implementType">
<j-dict-select-tag class="box-input" v-model="formInline.implementType"
:disabled="disabled"
@input="handleInput('implementType')"
:placeholder="$t('PleaseSelect')+$t('implementationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'implement_type'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="region">
<!-- <a-input class="box-input"-->
<!-- :disabled="true"-->
<!-- v-model="formInline.region_dictText"/>-->
<j-multi-select-tag class="box-input" v-model="formInline.region"
:placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('applicableSupplement')">{{$t('applicableSupplement')}}</span>
</div>
<a-form-model-item class="itemModel" prop="applicableSupplement">
<a-input class="box-input"
:disabled="false"
v-model="formInline.applicableSupplement"
:placeholder="$t('PleaseEnter')+$t('applicableSupplement')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
@@ -178,7 +178,7 @@
total: 0,
pageSize: 10,
pageNo: 1,
title: '新增',
title: this.$t('newlyAdded'),
columns: [
{
title: this.$t('VirtualListName'),
@@ -217,7 +217,7 @@
},
//添加
handleAdd() {
this.title = '新增'
this.title = this.$t('newlyAdded')
this.formInline = {}
this.visible = true
this.$nextTick(() => {
@@ -249,7 +249,7 @@
},
//编辑
edit(item) {
this.title = '编辑'
this.title = this.$t('edit')
this.formInline = JSON.parse(JSON.stringify(item))
this.visible = true
this.$nextTick(() => {
@@ -514,7 +514,7 @@
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index:100;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
@@ -6,21 +6,21 @@
</div>
</div>
<div class="header-content">
<!-- v-if="$route.query.TaskKey == 'zrrclrw'"-->
<div class="operator-text"
@click="distributionEngineerClick($t('distributionEngineer'))">
v-if="$route.query.TaskKey == 'zrrclrw' && this.$route.query.isDisplay"
@click="distributionEngineerClick($t('distributionEngineer'),1)">
<a-icon type="audit"/>
{{ $t('distributionEngineer') }}
</div>
<div class="operator-text"
v-if="$route.query.TaskKey == 'zrrclrw'"
v-if="$route.query.TaskKey == 'zrrclrw' && this.$route.query.isDisplay"
@click="reminderHandling()">
<a-icon type="sound"/>
{{ $t('reminderHandling') }}
</div>
<div class="operator-text"
v-if="$route.query.TaskKey == 'zrrclrw' || $route.query.TaskKey == 'dreDispose'"
@click="distributionEngineerClick($t('addFeedback'))">
v-if="$route.query.TaskKey == 'zrrclrw' && this.$route.query.isDisplay"
@click="distributionEngineerClick($t('addFeedback'),2)">
<a-icon type="plus-circle"/>
{{ $t('addFeedback') }}
</div>
@@ -384,7 +384,7 @@
]
},
visibleDetails: false,
columns: [
columnsAll: [
{
title: this.$t('serialNumber'),
dataIndex: 'index',
@@ -448,12 +448,27 @@
}
},
mounted() {
this.$route.query.isDisplay = JSON.parse(this.$route.query.isDisplay)
this.getList()
},
computed: {
columns() {
let columnResult = JSON.parse(JSON.stringify(this.columnsAll))
if (this.$route.query.TaskKey != 'zrrclrw' || !this.$route.query.isDisplay) {
for (var i = 0; i < columnResult.length; i++) {
if (columnResult[i].title === this.$t('operation')) {
columnResult.splice(i, 1)
i--
}
}
}
return columnResult
}
},
methods: {
pageOnChange(page, pageSize) {
this.pageNo = page
this.getList()
this.getDetails()
},
handleOk() {
this.$refs.ruleForm.validate(valid => {
@@ -525,10 +540,13 @@
handleCancel() {
this.visible = false
},
distributionEngineerClick(title) {
distributionEngineerClick(title, num) {
this.title = title
this.visible = true
this.formInline = {}
if (num == 1) {
this.getReminderHandlingList(1)
}
this.$nextTick(() => {
this.$refs.ruleForm.validateField()
})
@@ -563,9 +581,9 @@
},
reminderHandling() {
this.visibleTable = true
this.getReminderHandlingList()
this.getReminderHandlingList(2)
},
getReminderHandlingList() {
getReminderHandlingList(num) {
this.loadingTable = true
let query = {
taskDefinitionKey: 'dreDispose',
@@ -574,6 +592,24 @@
getAction(this.url.queryByActiProcInstId, query).then((res) => {
if (res.success) {
this.dataSourceTable = res.result || []
if (num == 1) {
this.distributionEngineerList = []
let userName = []
let userId = []
if (this.dataSourceTable && this.dataSourceTable.length > 0) {
this.dataSourceTable.forEach(val => {
this.distributionEngineerList.push({
name: val.userName,
userId: val.userId,
deliveryInstructions: val.deliveryInstructions
})
userName.push(val.userName)
userId.push(val.userId)
})
}
this.formInline.userId = userId.join(',')
this.formInline.userName = userName.join(',')
}
this.loadingTable = false
} else {
this.dataSourceTable = []
@@ -15,7 +15,8 @@
<a-button class="header-btn termin" v-if="isSendBack" @click="sendBackCkick" type="danger" ghost>
{{$t('sendBack')}}
</a-button>
<a-button class="header-btn submit" v-if="isAdopt" @click="adopt" type="primary">{{$t('adopt')}}</a-button>
<a-button class="header-btn submit" v-if="isResubmit" @click="Resubmit" type="primary">{{$t('Resubmit')}}</a-button>
<a-button class="header-btn submit" v-if="isAdopt" @click="adopt" type="primary">{{$t('submit')}}</a-button>
</div>
</div>
</div>
@@ -59,7 +60,11 @@
isAdopt: {
type: Boolean,
default: false
}
},
isResubmit:{
type: Boolean,
default: false
},
},
methods: {
terminationProcess() {
@@ -82,6 +87,10 @@
},
backTo() {
},
Resubmit(){
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
this.$emit('Resubmit', handlingTime)
},
adopt() {
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
@@ -108,7 +117,8 @@
.header-btn {
margin-right: 10px;
}
.header-btn:last-child{
.header-btn:last-child {
margin-right: 0;
}
}
@@ -10,12 +10,12 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required" v-if="$route.query.TaskKey == 'zrrclrw'">*</span>
<span class="Required" v-if="$route.query.TaskKey == 'zrrclrw' && $route.query.isDisplay">*</span>
<span class="title-text-text" :title="$t('reviewResults')">{{$t('reviewResults')}}</span>
</div>
<a-form-model-item class="itemModel" :prop="$route.query.TaskKey == 'fqrsh'?'':'reviewResult'">
<a-form-model-item class="itemModel" :prop="!$route.query.isDisplay?'':'reviewResult'">
<a-radio-group style="margin-top: 2px"
:disabled="$route.query.TaskKey == 'fqrsh'?true:false"
:disabled="!$route.query.isDisplay?true:false"
class="box-input"
v-model="formInline.reviewResult">
<a-radio value="Compliance">
@@ -42,7 +42,9 @@
<span class="title-text-text" :title="$t('feedbackMessage')">{{$t('feedbackMessage')}}</span>
</div>
<a-form-model-item class="itemModel" prop="approvalOpinion">
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackMessage')" v-model="formInline.approvalOpinion"
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackMessage')"
:disabled="!$route.query.isDisplay?true:false"
v-model="formInline.approvalOpinion"
:rows="4"/>
</a-form-model-item>
</div>
@@ -52,11 +54,12 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text-fq">
<span class="Required" style="margin-right: 13px"></span>
<span class="title-text-text" :title="$t('projectDeliveryDescription')">{{$t('projectDeliveryDescription')}}</span>
</div>
<a-form-model-item class="itemModel">
<span class="text-header">
爱上克里夫就的撒开了房间圣诞快乐房价士大夫打扫房间圣诞快乐房价是罚款乱收费考虑是否就但是考虑
{{formInline.deliveryRequirements}}
</span>
</a-form-model-item>
</div>
@@ -66,11 +69,14 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text-fq">
<span class="Required" v-if="$route.query.isDisplay">*</span>
<span class="title-text-text"
:title="$t('feedbackFromTheEngineer')">{{$t('feedbackFromTheEngineer')}}</span>
</div>
<a-form-model-item class="itemModel" prop="engineerFeedbackContent">
<a-form-model-item class="itemModel"
:prop="!$route.query.isDisplay?'':'engineerFeedbackContent'">
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackFromTheEngineer')"
:disabled="!$route.query.isDisplay?true:false"
v-model="formInline.engineerFeedbackContent"
:rows="4"/>
</a-form-model-item>
@@ -81,10 +87,11 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text-fq">
<span class="title-text-text"
:title="$t('Deliverables')">{{$t('Deliverables')}}</span>
<span class="Required" v-if="this.$route.query.isDisplay">*</span>
<span class="title-text-text"
:title="$t('Deliverables')">{{$t('Deliverables')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" :prop="!this.$route.query.isDisplay?'':'fileId'">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('fileId')">
{{ (formInline.fileId === 'null' || formInline.fileId === '' ||
@@ -117,7 +124,7 @@
</div>
<a-form-model-item class="itemModel">
<span class="text-header">
爱上克里夫就的撒开了房间圣诞快乐房价士大夫打扫房间圣诞快乐房价是罚款乱收费考虑是否就但是考虑
{{formInline.approvalOpinion}}
</span>
</a-form-model-item>
</div>
@@ -135,14 +142,18 @@
<span class="title-text-text" :title="$t('feedbackMessage')">{{$t('feedbackMessage')}}</span>
</div>
<a-form-model-item class="itemModel" prop="approvalOpinion">
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackMessage')" v-model="formInline.approvalOpinion"
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackMessage')"
:disabled="!$route.query.isDisplay?true:false"
v-model="formInline.approvalOpinion"
:rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"/>
<uploadFile ref="uploadFile"
:disabled="!$route.query.isDisplay?true:false"
@uploadSuccess="uploadSuccess"/>
</div>
</template>
@@ -155,7 +166,7 @@
components: {
uploadFile
},
props: ['queryBy'],
props: ['queryBy', 'queryPersonInCharge'],
data() {
return {
formInline: {},
@@ -176,21 +187,40 @@
}
],
engineerFeedbackContent: [
{
required: true,
message: this.$t('feedbackFromTheEngineer') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 300,
message: this.$t('feedbackFromTheEngineer') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
fileId: [
{
required: true,
message: this.$t('Deliverables') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
}
}
},
mounted() {
this.$route.query.isDisplay = JSON.parse(this.$route.query.isDisplay)
if (this.queryBy) {
this.formInline.reviewResult = this.queryBy.reviewResult || undefined
this.formInline.approvalOpinion = ''
this.formInline = { ...this.formInline }
}
if (this.queryPersonInCharge) {
this.formInline.deliveryRequirements = this.queryPersonInCharge.deliveryRequirements
this.formInline.engineerFeedbackContent = this.queryPersonInCharge.engineerFeedbackContent
this.formInline.fileId = this.queryPersonInCharge.fileId
this.formInline = { ...this.formInline }
}
},
methods: {
submit(callBack) {
@@ -273,7 +303,7 @@
}
.title-text-fq {
width: 124px;
width: 130px;
text-align: left;
display: inline-block;
font-weight: 500;
@@ -22,20 +22,23 @@
v-if="isDisplay"
/>
<reviewedByThePersonInCharge
v-if="isDisplay"
ref="reviewedByThePersonInChargeRef"
:queryBy="queryBy"
v-if="(isDisplay && $route.query.TaskKey == 'zrrclrw') ||
(isDisplay && $route.query.TaskKey == 'fqrsh')"
:queryPersonInCharge="queryPersonInCharge"
/>
<footerProcess
v-if="isDisplay"
:is-termination-process="isTerminationProcess"
:is-adopt="isAdopt"
:isSendBack="isSendBack"
:isSubmit="isSubmit"
:is-resubmit="isResubmit"
@terminationProcess="terminationProcess"
@adopt="adopt"
@sendBack="sendBack"
@submit="submit"
@Resubmit="Resubmit"
/>
<circulationHistory v-if="isDisplay"/>
@@ -75,7 +78,9 @@
urlFrom: 'project/projectLibraryBase/queryById',
queryProjectLawsInventoryInfoById: 'project/projectLawsInventoryEO/queryProjectLawsInventoryInfoById',
queryTaskDetailByTaskIds: '/task/queryTaskDetailByTaskIds',
edit: '/project/projectTaskInventoryDetailEO/edit'
edit: '/project/projectTaskInventoryDetailEO/edit',
dreSubmit: '/project/projectTaskInventoryFeedbackEO/dreSubmit',
list: '/project/projectTaskInventoryFeedbackEO/list'
},
queryBy: {},
queryProject: {},
@@ -136,24 +141,25 @@
title: this.$t('descriptionDeliverables'),
value: this.$route.query.remarks
}
]
],
queryPersonInCharge: {}
}
},
computed: {
isSendBack() {
if (this.$route.query.TaskKey == 'fqrsh') {
if (this.$route.query.TaskKey == 'fqrsh' && this.$route.query.isDisplay) {
return true
}
return false
},
isTerminationProcess() {
if (this.$route.query.TaskKey == 'fqrsh') {
if (this.$route.query.TaskKey == 'fqrsh' && this.$route.query.isDisplay) {
return true
}
return false
},
isAdopt() {
if (this.$route.query.TaskKey == 'fqrsh') {
if (this.$route.query.TaskKey == 'fqrsh' && this.$route.query.isDisplay) {
if (this.queryBy.reviewResult == 'Compliance' || this.queryBy.reviewResult == 'NA') {
return true
}
@@ -161,27 +167,53 @@
return false
},
isSubmit() {
if (this.$route.query.TaskKey == 'zrrclrw') {
if (this.$route.query.TaskKey == 'zrrclrw' && this.$route.query.isDisplay) {
return true
} else if (this.$route.query.TaskKey == 'dreDispose' && this.$route.query.isDisplay) {
if (!this.queryPersonInCharge.engineerFeedbackContent && this.queryPersonInCharge.status != 'haveDone') {
return true
}
}
return false
},
isResubmit() {
if (this.$route.query.TaskKey == 'dreDispose' && this.$route.query.isDisplay) {
if (this.queryPersonInCharge.engineerFeedbackContent && this.queryPersonInCharge.status != 'haveDone') {
return true
}
}
return false
}
},
mounted() {
let _this = this
if (this.$route.query.taskIds) {
this.isDisplay = false
this.queryTaskDetailByTask(function() {
_this.queryProjectLawsInventoryInfo()
})
} else {
this.loading = true
this.isDisplay = false
this.queryBy.projectLibraryId = this.$route.query.projectLibraryId
this.queryBy.id = this.$route.query.projectTaskInventoryId
this.queryProjectLawsInventoryInfo()
this.$route.query.isDisplay = JSON.parse(this.$route.query.isDisplay)
let query = {
actiProcInstId: this.$route.query.actiProcInstId,
createBy: this.userInfo().username
}
this.loading = true
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.queryPersonInCharge = res.result[1] || {}
if (this.$route.query.taskIds) {
this.isDisplay = false
this.queryTaskDetailByTask(function() {
_this.queryProjectLawsInventoryInfo()
})
} else {
this.loading = true
this.isDisplay = false
this.queryBy.projectLibraryId = this.$route.query.projectLibraryId
this.queryBy.id = this.$route.query.projectTaskInventoryId
this.queryProjectLawsInventoryInfo()
}
} else {
this.dataSource = []
}
})
},
methods: {
...mapGetters(['userInfo']),
terminationProcess(operatorTime) {
@@ -209,12 +241,40 @@
}
this.completeTask({ flag: 1, operatorTime: operatorTime })
},
Resubmit(operatorTime) {
this.$refs.reviewedByThePersonInChargeRef.submit((res) => {
this.textLoading = this.$t('Submitting')
this.loading = true
res.operatorTime = operatorTime
if (this.$route.query.TaskKey == 'dreDispose') {
this.dreSubmit(res)
}
})
},
submit(operatorTime) {
this.$refs.reviewedByThePersonInChargeRef.submit((res) => {
this.textLoading = this.$t('Submitting')
this.loading = true
res.operatorTime = operatorTime
this.completeTask(res)
if (this.$route.query.TaskKey == 'dreDispose') {
this.dreSubmit(res)
} else {
this.completeTask(res)
}
})
},
dreSubmit(val) {
let query = {
id: this.queryPersonInCharge.id,
engineerFeedbackContent: val.engineerFeedbackContent,
fileId: val.fileId,
flowType: this.$route.query.flowType,
actiProcInstId: this.$route.query.actiProcInstId,
projectTaskInventoryId: this.$route.query.projectTaskInventoryId,
deliveryRequirements: val.deliveryRequirements
}
putAction(this.url.dreSubmit, query).then((res) => {
})
},
completeTask(value) {
@@ -1,6 +1,6 @@
<template>
<div class="doc-detail">
<!-- 认证参数收集——清单信息-->
<!-- 认证参数收集——清单信息-->
<div class="Virtual-detail-header" style="position: fixed;top: 0">
<div class="Virtual-detail-title">
<span style="line-height: 74px;display: inline-block;float: left">
@@ -65,144 +65,144 @@
</template>
<script>
import TaskList from '@/views/projectManagement/components/TaskList'
import listOfRegulations from '@/views/projectManagement/components/listOfRegulations'
import ProjectDetailsName from '@/views/projectManagement/components/ProjectDetails'
import ParameterItemCollectionList from '../../components/ParameterItemCollectionList'
import nonConformance from '@/views/projectManagement/components/nonConformance'
import updateLog from '@/components/UpdateLog/index'
import historicalVersionList from '@/views/projectManagement/components/historicalVersionList'
import commentList from '@/views/projectManagement/components/commentList'
import TaskList from '@/views/projectManagement/components/TaskList'
import listOfRegulations from '@/views/projectManagement/components/listOfRegulations'
import ProjectDetailsName from '@/views/projectManagement/components/ProjectDetails'
import ParameterItemCollectionList from '../../components/ParameterItemCollectionList'
import nonConformance from '@/views/projectManagement/components/nonConformance'
import updateLog from '@/components/UpdateLog/index'
import historicalVersionList from '@/views/projectManagement/components/historicalVersionList'
import commentList from '@/views/projectManagement/components/commentList'
export default {
name: 'ProjectDetails',
components: {
TaskList,
listOfRegulations,
ProjectDetailsName,
ParameterItemCollectionList,
nonConformance,
updateLog,
historicalVersionList,
commentList
},
data() {
return {
title: this.$t('projectDetails'),
textTitle: '认证参数收集',
url: {
logList: '',
historicalVersionUrl: ''
export default {
name: 'ProjectDetails',
components: {
TaskList,
listOfRegulations,
ProjectDetailsName,
ParameterItemCollectionList,
nonConformance,
updateLog,
historicalVersionList,
commentList
},
data() {
return {
title: this.$t('projectDetails'),
textTitle: '认证参数收集',
url: {
logList: '/project/projectLawsInventoryLogEO/page',
historicalVersionUrl: ''
},
paramsManifest: {}
}
},
mounted() {
this.textColor()
// 清单信息
this.paramsManifest = JSON.parse(localStorage.getItem('paramsManifest'))
},
methods: {
textColor() {
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
if (textColor && textColor.length > 0) {
textColor[0].classList.remove('Virtual-detail-left-text-color')
}
let text = document.getElementsByClassName('Virtual-detail-left-text')
if (text && text.length > 0) {
text[4].classList.add('Virtual-detail-left-text-color')
}
},
paramsManifest: {},
}
},
mounted() {
this.textColor()
// 清单信息
this.paramsManifest = JSON.parse(localStorage.getItem('paramsManifest'))
},
methods: {
textColor() {
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
if (textColor && textColor.length > 0) {
textColor[0].classList.remove('Virtual-detail-left-text-color')
textClick(num, name) {
this.textTitle = name
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
if (textColor && textColor.length > 0) {
textColor[0].classList.remove('Virtual-detail-left-text-color')
}
let text = document.getElementsByClassName('Virtual-detail-left-text')
text[num].classList.add('Virtual-detail-left-text-color')
},
UpdateLogClick() {
this.$refs.updateLogRef.getList({ projectLibraryId: this.$route.query.id })
},
historicalVersionClick() {
this.$refs.historicalVersionListRef.getList()
},
commentClick() {
this.$refs.commentListRef.getData()
}
let text = document.getElementsByClassName('Virtual-detail-left-text')
if (text && text.length > 0) {
text[4].classList.add('Virtual-detail-left-text-color')
}
},
textClick(num, name) {
this.textTitle = name
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
if (textColor && textColor.length > 0) {
textColor[0].classList.remove('Virtual-detail-left-text-color')
}
let text = document.getElementsByClassName('Virtual-detail-left-text')
text[num].classList.add('Virtual-detail-left-text-color')
},
UpdateLogClick() {
this.$refs.updateLogRef.getList()
},
historicalVersionClick() {
this.$refs.historicalVersionListRef.getList()
},
commentClick() {
this.$refs.commentListRef.getData()
}
}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
.doc-detail {
background: #fff;
height: 100%;
.Virtual-detail-header {
width: 100%;
height: 68px;
line-height: 68px;
padding: 0 32px 0 32px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
border-bottom: 2px #eff1f3 solid;
.doc-detail {
background: #fff;
.Virtual-detail-title {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-size: 20px;
font-weight: 400;
color: #040B29;
line-height: 68px;
}
.doc-detail-right {
width: 800px;
line-height: 68px;
display: flex;
}
}
.Virtual-detail-left {
width: 240px;
padding: 16px 24px;
box-sizing: border-box;
font-size: 16px;
line-height: 3;
float: left;
.Virtual-detail-left-text {
padding: 2px 12px;
cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.Virtual-detail-right {
border-left: 2px #eff1f3 solid;
width: calc(100% - 240px);
height: 100%;
float: left;
overflow: auto;
.Virtual-detail-header {
width: 100%;
height: 68px;
line-height: 68px;
padding: 0 32px 0 32px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
border-bottom: 2px #eff1f3 solid;
background: #fff;
.Virtual-detail-title {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-size: 20px;
font-weight: 400;
color: #040B29;
line-height: 68px;
}
.doc-detail-right {
width: 800px;
line-height: 68px;
display: flex;
}
}
.Virtual-detail-left {
width: 240px;
padding: 16px 24px;
box-sizing: border-box;
font-size: 16px;
line-height: 3;
float: left;
.Virtual-detail-left-text {
padding: 2px 12px;
cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.Virtual-detail-right {
border-left: 2px #eff1f3 solid;
width: calc(100% - 240px);
height: 100%;
float: left;
overflow: auto;
}
}
}
.Virtual-detail-left-text-color {
background: #eff1f3;
border-radius: 4px;
}
.Virtual-detail-left-text-color {
background: #eff1f3;
border-radius: 4px;
}
.Virtual-detail-text-right {
.Virtual-detail-text-right {
}
}
</style>
@@ -90,7 +90,7 @@
title: this.$t('projectDetails'),
textTitle: '项目详情',
url: {
logList: '',
logList: '/project/projectLawsInventoryLogEO/page',
historicalVersionUrl: ''
}
}
@@ -119,7 +119,7 @@
text[num].classList.add('Virtual-detail-left-text-color')
},
UpdateLogClick() {
this.$refs.updateLogRef.getList()
this.$refs.updateLogRef.getList({projectLibraryId: this.$route.query.id})
},
historicalVersionClick() {
this.$refs.historicalVersionListRef.getList()
@@ -590,6 +590,7 @@ export default {
// 截至时间确定弹框关闭
areaVisibleTaskCutOffTimeflag(val) {
this.areaVisibleTaskCutOffTime = val
this.$refs.CollectionTabel.getTableList()
},
handleModule() {
@@ -231,12 +231,14 @@
CurrentColor: {
'1': '#f3dddd',
'2': '#f6ebdb',
'3': '#dbf6e2'
'3': '#dbf6e2',
'4': '#ddf3f4'
},
CurrentColorBox: {
'1': '#E83030',
'2': '#FDA71C',
'3': '#26BD4B'
'3': '#26BD4B',
'4': '#00B3BE'
},
url: {
list: '/project/projectTaskInventoryEO/list',
@@ -273,6 +275,8 @@
},
verifyTaskClick(val, num, isTrue) {
let query = {}
console.log(typeof isTrue)
return
switch (num) {
case 1:
query = {
@@ -283,7 +287,8 @@
id: this.$route.query.id,
studioEngineer: this.$route.query.studioEngineer,
serialNumber: val.serialNumber,
TaskKey: isTrue ? val.designTaskDefinitionKey : 'hhhhh',
TaskKey: val.designTaskDefinitionKey,
isDisplay: isTrue,
flowType: 2,
Sponsor: 'designInitiatorName',
personLiable: 'designDutyName',
@@ -304,8 +309,9 @@
studioEngineer: this.$route.query.studioEngineer,
projectLibraryId: this.$route.query.id,
serialNumber: val.serialNumber,
TaskKey: isTrue ? val.prehomoTaskDefinitionKey : 'hhhh',
TaskKey: val.prehomoTaskDefinitionKey,
flowType: 3,
isDisplay: isTrue,
id: this.$route.query.id,
Sponsor: 'prehomoInitiatorName',
personLiable: 'prehomoDutyName',
@@ -327,8 +333,9 @@
studioEngineer: this.$route.query.studioEngineer,
serialNumber: val.serialNumber,
projectTaskInventoryId: val.projectLawsInventoryId,
TaskKey: isTrue ? val.verifyTaskDefinitionKey : 'hhhhh',
TaskKey: val.verifyTaskDefinitionKey,
flowType: 4,
isDisplay: isTrue,
Sponsor: 'verifyInitiatorName',
personLiable: 'verifyDutyName',
typeOfDeliverables: 'verifyDeliverableType_dictText',
@@ -73,11 +73,12 @@
{{ $t('green') }}
</span>
</a-select-option>
<!-- <a-select-option :key="3" :value="3">-->
<!-- <span style="display: inline-block;width: 100%">-->
<!-- {{ $t('blue') }}-->
<!-- </span>-->
<!-- </a-select-option>-->
<a-select-option :value="'4'">
<span style="display: inline-block;width: 100%">
{{ $t('blue') }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
@@ -143,6 +144,7 @@
this.disabled = true
}
}
console.log(val.conditionAssessment)
this.formInline = val
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
@@ -1,7 +1,7 @@
<template>
<a-modal
:title="$t('batSetting')"
:width="900"
:width="1200"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@@ -39,6 +39,22 @@
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="region">
<j-multi-select-tag class="box-input" v-model="formInline.region"
:placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -53,17 +69,53 @@
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('areaOfResponsibility')">{{$t('areaOfResponsibility')}}</span>
</div>
<a-form-model-item class="itemModel-multi">
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('vehicleInProductionDate')">{{$t('vehicleInProductionDate')}}</span>
</div>
<a-form-model-item class="itemModel" :prop="'implementTime'">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('vehicleInProductionDate')"
:getCalendarContainer="(trigger) => trigger.parentNode"
@change="dateChange({db_field_name:'implementTime'})"
format="YYYY-MM-DD"
v-model="formInline.implementTime"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('ImplementationDate')">{{$t('ImplementationDate')}}</span>
</div>
<a-form-model-item class="itemModel">
<j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"
@input="handleInput('dutyTerritory')"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" dictCode="duty_territory"/>
<a-date-picker class="box-input"
:getCalendarContainer="(trigger) => trigger.parentNode"
:placeholder="$t('PleaseSelect')+$t('ImplementationDate')"
@change="dateChange({db_field_name:'xin1Che1Xing2Shi2Shi1Ri4Qi1'})"
format="YYYY-MM-DD"
v-model="formInline.xin1Che1Xing2Shi2Shi1Ri4Qi1"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
@@ -85,6 +137,8 @@
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -244,7 +298,7 @@
}
.title-text {
width: 84px;
width: 174px;
text-align: right;
display: inline-block;
font-weight: 500;
@@ -121,7 +121,7 @@
let color = []
if (dataSource && dataSource.length > 0) {
dataSource.forEach(res => {
if (res.color == '0') {
if (res.color == '4') {
data.push({
value: res.conditionAssessmentCount,
name: this.$t('blue')
@@ -40,7 +40,7 @@
:triggerChange="false" :dictCode="'state'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="12" :sm="24">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
@@ -249,8 +249,7 @@
}
.title-text {
width: 20%;
min-width: 110px;
width: 33px;
color: #000F16;
display: inline-block;
font-weight: 500;
@@ -265,9 +264,8 @@
.box-input {
display: inline-block;
width: 70%;
width: 100%;
height: 38px;
margin-top: 2px;
}
.box-button {
@@ -356,14 +356,14 @@
title: this.$t('listConfirmationStatus'),
align: 'center',
dataIndex: 'inventoryAffirmStatusName',
width: 180,
width: 240,
scopedSlots: { customRender: 'titleName' }
},
{
title: this.$t('taskAffirmStatus'),
align: 'center',
dataIndex: 'taskAffirmStatusName',
width: 180,
width: 240,
scopedSlots: { customRender: 'titleName' }
},
// {
@@ -395,13 +395,13 @@
{
title: this.$t('ImplementationDate'),
align: 'center',
width: 140,
width: 200,
dataIndex: 'xin1Che1Xing2Shi2Shi1Ri4Qi1'
},
{
title: this.$t('vehicleInProductionDate'),
align: 'center',
width: 140,
width: 220,
dataIndex: 'implementTime'
},
{
@@ -421,7 +421,7 @@
{
title: this.$t('applicableSupplement'),
align: 'center',
width: 180,
width: 220,
dataIndex: 'applicableSupplement',
scopedSlots: { customRender: 'titleName' }
},
@@ -500,6 +500,13 @@
dataIndex: 'designDueDate',
align: 'center',
width: 140
},
{
title: this.$t('descriptionDeliverables'),
dataIndex: 'designRemark',
align: 'center',
width: 220,
scopedSlots: { customRender: 'titleName' }
}
]
},
@@ -532,6 +539,13 @@
dataIndex: 'prehomoDueDate',
align: 'center',
width: 140
},
{
title: this.$t('descriptionDeliverables'),
dataIndex: 'prehomoRemark',
align: 'center',
width: 220,
scopedSlots: { customRender: 'titleName' }
}
]
},
@@ -564,6 +578,13 @@
dataIndex: 'verifyDueDate',
align: 'center',
width: 140
},
{
title: this.$t('descriptionDeliverables'),
dataIndex: 'verifyRemark',
align: 'center',
width: 220,
scopedSlots: { customRender: 'titleName' }
}
]
},