528 lines
17 KiB
Python
528 lines
17 KiB
Python
<template>
|
|
<div class="app-container">
|
|
<el-row :gutter="6">
|
|
<el-col :xs="24" :md="8">
|
|
<el-card class="box-card" style="overflow-y:auto;overflow-x:hidden;height:200px">
|
|
<div slot="header" class="clearfix">
|
|
<span>受审核方</span>
|
|
<el-button style="float: right; padding: 0px 0" type="text">更多企业信息</el-button>
|
|
</div>
|
|
<div class="item">{{auditee.name}}</div>
|
|
|
|
<div v-for="item in auditee.address_" :key="item.id" class="text item">
|
|
<span class="span">{{item.type}}</span>
|
|
{{item.address}}
|
|
</div>
|
|
<div class="text item">
|
|
<span class="span">常用联系人</span>
|
|
{{auditee.linkman1_name}}/{{auditee.linkman1_duty}}/{{auditee.linkman1_mobile}}
|
|
</div>
|
|
<div class="text item">
|
|
<span class="span">备用联系人</span>
|
|
{{auditee.linkman2_name}}/{{auditee.linkman2_duty}}/{{auditee.linkman2_mobile}}
|
|
</div>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :xs="24" :md="16">
|
|
<el-card class="box-card" style="overflow-y:auto;overflow-x:hidden;height:200px">
|
|
<div slot="header" class="clearfix">
|
|
<span>项目信息</span>
|
|
</div>
|
|
<div class="text item">
|
|
<span class="span">项目号</span>
|
|
{{project.number}}
|
|
<span class="span" >所属计划</span>
|
|
<span v-if="project.plan_">{{project.plan_.name}}</span>
|
|
<span v-else>暂无</span>
|
|
</div>
|
|
<div class="text item">
|
|
<span class="span">项目概况</span>
|
|
<el-tag
|
|
v-for="(item, index) in project.certapps"
|
|
:key="index"
|
|
style="margin:2px;font-size:12px"
|
|
>{{item}}</el-tag>
|
|
</div>
|
|
<div class="text item">
|
|
<span class="span">当前状态</span>
|
|
{{project.status}}
|
|
</div>
|
|
<div class="text item" v-if="project.assign_by_">
|
|
<span class="span">下达人</span>
|
|
{{project.assign_by_.name}}
|
|
</div>
|
|
<div class="text2 item">
|
|
<!-- <el-switch
|
|
style="display: block"
|
|
v-model="can_paichai"
|
|
active-color="#13ce66"
|
|
inactive-color="#FF0000"
|
|
active-text="是否可派差">
|
|
</el-switch>-->
|
|
<el-checkbox v-model="can_paichai" border @change="handlePaichai">可派差</el-checkbox>
|
|
</div>
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row style="margin-top:6px">
|
|
<el-col>
|
|
<el-card class="box-card">
|
|
<div slot="header" class="clearfix">
|
|
<span>业务信息</span>
|
|
</div>
|
|
<el-table
|
|
ref="projectTable"
|
|
v-loading="listLoading"
|
|
:data="certappData"
|
|
style="width: 100%;"
|
|
border
|
|
fit
|
|
stripe
|
|
highlight-current-row
|
|
max-height="300"
|
|
>
|
|
<el-table-column label="单号">
|
|
<template slot-scope="scope" v-if="scope.row.number">{{ scope.row.number }}</template>
|
|
</el-table-column>
|
|
<el-table-column label="认证领域/分类" width="300px">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="scope.row.cert_field_">{{scope.row.cert_field_.name}}</el-tag>
|
|
<el-tag
|
|
v-if="scope.row.cccpv_class_"
|
|
type="warning"
|
|
style="margin:2px"
|
|
>{{scope.row.cccpv_class_.name}}</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<!-- <el-table-column label="申请信息" width="300px">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
<span style="color:darkblue;font-weight:bold">申请方</span>
|
|
:{{ scope.row.applicant_v.name }}
|
|
</div>
|
|
<div v-if="scope.row.manufacture">
|
|
<span style="color:darkblue;font-weight:bold">制造商</span>
|
|
:{{ scope.row.manufacture_v.name }}
|
|
</div>
|
|
<div v-if="scope.row.factory">
|
|
<span style="color:darkblue;font-weight:bold">生产厂</span>
|
|
:{{ scope.row.factory_v.name }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>-->
|
|
<el-table-column label="当前状态">
|
|
<template slot-scope="scope">{{ scope.row.status}}</template>
|
|
</el-table-column>
|
|
<el-table-column label="受理/确认人">
|
|
<template
|
|
slot-scope="scope"
|
|
v-if="scope.row.accept_by_"
|
|
>{{ scope.row.accept_by_.name}}</template>
|
|
</el-table-column>
|
|
<el-table-column label="创建日期">
|
|
<template slot-scope="scope">
|
|
<span>{{ scope.row.create_time }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作" width="300">
|
|
<template slot-scope="scope">
|
|
<el-button-group>
|
|
<el-button
|
|
type="primary"
|
|
size="small"
|
|
:disabled="!checkPermission(['certapp_detail'])"
|
|
@click="handleDetail(scope)"
|
|
>详情</el-button>
|
|
</el-button-group>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="6" style="margin-top:6px">
|
|
<el-col :xs="24" :md="9">
|
|
<el-card class="box-card" style="overflow-y:auto;overflow-x:hidden;">
|
|
<div slot="header" class="clearfix">
|
|
<span>联系记录</span>
|
|
</div>
|
|
<el-table
|
|
ref="projectTable"
|
|
v-loading="listLoading"
|
|
:data="contactData"
|
|
style="width: 100%;"
|
|
border
|
|
fit
|
|
stripe
|
|
highlight-current-row
|
|
height="200"
|
|
>
|
|
<el-table-column label="联系时间">
|
|
<template slot-scope="scope">{{ scope.row.contact_date }}</template>
|
|
</el-table-column>
|
|
<el-table-column label="内容" >
|
|
<template slot-scope="scope">{{ scope.row.content }}</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作人">
|
|
<template slot-scope="scope">{{ scope.row.create_by_.name }}</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<el-row :gutter="10">
|
|
<el-col :xs="24" :md="12">
|
|
<el-form
|
|
ref="elForm"
|
|
:model="formData"
|
|
:rules="rules"
|
|
size="medium"
|
|
label-width="80px"
|
|
style="margin-top:2px"
|
|
label-position="left"
|
|
>
|
|
<el-row>
|
|
<el-col>
|
|
<el-form-item label="联系时间" prop="contact_date">
|
|
<el-date-picker
|
|
v-model="formData.contact_date"
|
|
format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
:style="{width: '100%'}"
|
|
placeholder="联系时间"
|
|
clearable
|
|
></el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col>
|
|
<el-form-item label="内容" prop="content">
|
|
<el-input
|
|
v-model="formData.content"
|
|
type="textarea"
|
|
:autosize="{ minRows: 2, maxRows: 4}"
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<div style="text-align:right;">
|
|
<el-button-group>
|
|
<el-button type="primary" @click="createNewRecord" size="mini">创建新记录</el-button>
|
|
<!-- <el-button type="primary" @click="updateNowRecord" size="mini">保存</el-button> -->
|
|
<el-button @click="resetForm" size="mini">重置</el-button>
|
|
</el-button-group>
|
|
</div>
|
|
</el-row>
|
|
</el-form>
|
|
</el-col>
|
|
<el-col :xs="24" :md="12">
|
|
<el-row>
|
|
<el-card shadow="never" style="margin-top:2px">
|
|
<div slot="header" class="clearfix">
|
|
<span>常用语</span>
|
|
</div>
|
|
<el-tag
|
|
v-for="(item, index) in useditems"
|
|
:key="index"
|
|
@click.native="handleClickTag(item)"
|
|
style="margin:2px;font-size:12px"
|
|
>{{item}}</el-tag>
|
|
</el-card>
|
|
</el-row>
|
|
</el-col>
|
|
</el-row>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :xs="24" :md="15">
|
|
<el-card class="box-card">
|
|
<div slot="header" class="clearfix">
|
|
<span>审核组成员</span>
|
|
</div>
|
|
<el-table
|
|
ref="memberTable"
|
|
v-loading="listLoading"
|
|
:data="memberData"
|
|
style="width: 100%;"
|
|
border
|
|
fit
|
|
stripe
|
|
highlight-current-row
|
|
height="200"
|
|
@row-click="handleMClick"
|
|
>
|
|
<el-table-column label="姓名">
|
|
<template slot-scope="scope">{{ scope.row.user_.name }}</template>
|
|
</el-table-column>
|
|
<el-table-column label="是否组长" >
|
|
<template slot-scope="scope">
|
|
<i class="el-icon-circle-check" v-if="scope.row.is_leader" style="color:green;"></i>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="身份" >
|
|
<template slot-scope="scope" v-if="scope.row.identity">{{ scope.row.identity_.name }}</template>
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
<el-form ref="elForm2" :model="formDataMember" label-width="80px" label-position="right" :rules="rules2" style="margin-top:2px">
|
|
<el-col :xs="24" :md="12">
|
|
<el-form-item label="成员" prop="user" >
|
|
<el-input placeholder="请选择成员" readonly clearable v-model="formDataMember.user_.name">
|
|
<el-button slot="append" icon="el-icon-search" @click="choseMember"></el-button>
|
|
</el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="24" :md="12">
|
|
<el-form-item prop="is_leader">
|
|
<el-checkbox v-model="formDataMember.is_leader">组长</el-checkbox>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="24" :md="12">
|
|
<el-form-item label="身份" prop="identity">
|
|
<el-select v-model="formDataMember.identity" placeholder="请选择">
|
|
<el-option
|
|
v-for="item in identityOptions"
|
|
:key="item.id"
|
|
:label="item.name"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-form>
|
|
<div style="text-align:right;">
|
|
<el-button-group>
|
|
<el-button type="primary" @click="appendNewM" size="mini">添加新成员</el-button>
|
|
<el-button type="warning" @click="updateNowM" size="mini">保存</el-button>
|
|
<el-button @click="resetForm2" size="mini">重置</el-button>
|
|
</el-button-group>
|
|
</div>
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
<el-dialog
|
|
title="选择组员"
|
|
:visible.sync="choseVisiable"
|
|
:close-on-click-modal="false"
|
|
width="80%"
|
|
:append-to-body="true"
|
|
>
|
|
<Userchose ref="Userchose" :queryData="queryData" @handleChose="choseComplete"></Userchose>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<style scoped>
|
|
.text {
|
|
font-size: 15px;
|
|
}
|
|
.el-checkbox__label {
|
|
font-size: 18px;
|
|
}
|
|
.item {
|
|
margin-bottom: 4px;
|
|
}
|
|
.span {
|
|
color: gray;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
<script>
|
|
import { getDictList } from "@/api/dict"
|
|
import { getCertappList } from "@/api/certapp";
|
|
import { getEnterprise } from "@/api/enterprise";
|
|
import { getProject, updateProject } from "@/api/project";
|
|
import { getContactRecordList, createContactRecord } from "@/api/plan";
|
|
import Pagination from "@/components/Pagination";
|
|
import checkPermission from "@/utils/permission";
|
|
import Userchose from "@/views/employee/userchose"
|
|
import { getMemberList, createMember, updateMember, deleteMember} from "@/api/member"
|
|
import { genTree, deepClone } from '@/utils'
|
|
export default {
|
|
components: { Pagination, Userchose },
|
|
props: [],
|
|
data() {
|
|
return {
|
|
auditee: {},
|
|
project: { assign_by_: null },
|
|
certappData: [],
|
|
contactData: [],
|
|
memberData:[],
|
|
can_paichai: false,
|
|
formData: {
|
|
content: "",
|
|
project: this.$route.query.project,
|
|
},
|
|
rules: {
|
|
contact_date: [
|
|
{
|
|
required: true,
|
|
message: "请选择日期",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
content: [
|
|
{
|
|
required: true,
|
|
message: "请输入内容",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
},
|
|
useditems: [
|
|
"可以,第一联系人",
|
|
"可以,第二联系人",
|
|
"不可以",
|
|
"C类企业飞行检查",
|
|
],
|
|
formDataMember:{
|
|
user:null,
|
|
user_:{},
|
|
is_leader:false,
|
|
project:this.$route.query.project
|
|
},
|
|
rules2:{
|
|
user: [
|
|
{
|
|
required: true,
|
|
message: "请选择组员",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
},
|
|
choseVisiable:false,
|
|
queryData:{},
|
|
identityOptions:[]
|
|
};
|
|
},
|
|
computed: {},
|
|
watch: {},
|
|
created() {
|
|
this.getParams();
|
|
this.getMemberList_()
|
|
this.getCertappList_();
|
|
this.getContactRecordList_();
|
|
this.getIdOptions();
|
|
},
|
|
mounted() {},
|
|
methods: {
|
|
checkPermission,
|
|
getParams() {
|
|
getProject(this.$route.query.project).then((res) => {
|
|
this.project = res.data;
|
|
this.can_paichai = this.project.can_paichai;
|
|
}).then(()=>{
|
|
getEnterprise(this.project.auditee).then((res) => {
|
|
this.auditee = res.data;
|
|
})
|
|
})
|
|
},
|
|
getCertappList_() {
|
|
this.listLoading = true;
|
|
getCertappList({
|
|
project: this.$route.query.project,
|
|
pageoff: true,
|
|
}).then((res) => {
|
|
if (res.data) {
|
|
this.certappData = res.data;
|
|
}
|
|
this.listLoading = false;
|
|
});
|
|
},
|
|
getIdOptions(){
|
|
getDictList({type__code:'auditor_teamrole',pageoff:true}).then(res=>{
|
|
this.identityOptions = res.data
|
|
})
|
|
},
|
|
getContactRecordList_() {
|
|
getContactRecordList({
|
|
pageoff: true,
|
|
project: this.$route.query.project,
|
|
}).then((res) => {
|
|
this.contactData = res.data;
|
|
});
|
|
},
|
|
getMemberList_(){
|
|
getMemberList({project:this.$route.query.project, pageoff:true}).then(res=>{
|
|
this.memberData = res.data
|
|
})
|
|
},
|
|
submitForm() {
|
|
this.$refs["elForm"].validate((valid) => {
|
|
if (!valid) return;
|
|
// TODO 提交表单
|
|
});
|
|
},
|
|
resetForm() {
|
|
this.$refs["elForm"].resetFields();
|
|
},
|
|
resetForm2() {
|
|
this.$refs["elForm2"].resetFields();
|
|
this.formDataMember.user_ = {}
|
|
},
|
|
handleDetail() {},
|
|
handleClickTag(val) {
|
|
this.formData.content = val;
|
|
},
|
|
createNewRecord() {
|
|
createContactRecord(this.formData).then((rse) => {
|
|
this.$message.success("成功");
|
|
this.getContactRecordList_();
|
|
});
|
|
},
|
|
// contactClick(scope) {
|
|
// this.formData.scope
|
|
// },
|
|
handlePaichai(val) {
|
|
if (val) {
|
|
this.$confirm("确定标记为可派差?", "提示", {})
|
|
.then(() => {
|
|
updateProject(this.$route.query.project, {
|
|
can_paichai: true,
|
|
}).then((res) => {
|
|
this.$message.success("成功");
|
|
});
|
|
})
|
|
.catch((res) => {
|
|
this.can_paichai = false;
|
|
});
|
|
} else {
|
|
this.$confirm("取消派差标记?", "警告", { type: "warning" })
|
|
.then(() => {
|
|
this.$message.success("未写接口");
|
|
this.can_paichai = true;
|
|
})
|
|
.catch((res) => {
|
|
this.can_paichai = true;
|
|
});
|
|
}
|
|
},
|
|
choseMember(){
|
|
this.choseVisiable = true
|
|
},
|
|
appendNewM(){
|
|
createMember(this.formDataMember).then(res=>{
|
|
this.$message.success('成功')
|
|
this.getMemberList_()
|
|
})
|
|
},
|
|
updateNowM(){
|
|
if(this.formDataMember.id){
|
|
updateMember(this.formDataMember.id, this.formDataMember).then(res=>{
|
|
this.$message.success('成功')
|
|
this.getMemberList_()
|
|
})
|
|
}
|
|
},
|
|
choseComplete(val){
|
|
if(val){
|
|
this.formDataMember.user = val.user_.id
|
|
this.formDataMember.user_.name = val.user_.name
|
|
}
|
|
this.choseVisiable = false
|
|
},
|
|
handleMClick(row,c,e){
|
|
this.formDataMember = deepClone(row)
|
|
}
|
|
},
|
|
|
|
};
|
|
</script> |