zhouwx
2 天以前 dcddf912c4262bb129ed8d131bedb8fdace1c51d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<template>
  <div class="notice">
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="50%"
        :before-close="handleClose"
        :close-on-press-escape="false"
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-position="top" label-width="150px" >
        <el-form-item label="企业名称:" prop="companyId" v-if="state.isAdmin">
          <el-select v-model="state.form.companyId" placeholder="请选择" clearable style="width: 100%" :disabled="title == '查看' || title == '编辑' || !state.isAdmin">
            <el-option
                v-for="item in state.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="1.企业的基本情况,主要包括:法人证书编号,所属部门、法人代表姓名、身份证号、职务、人员总数、技术人员数、不良情况记录、保密等资质。" prop="basic" >
          <el-input v-model="state.form.basic" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="2.企业简介、行业特点、资源和能力情况。特别是上次审核以来领导层、组织机构(包括分场所)及体系变动情况。" prop="introduce" >
          <el-input v-model="state.form.introduce" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="3.最高管理者对体系的重视程度,员工的质量意识,企业的经营宗旨和质量方针的确定,质量方针与经营宗旨是否相适宜,质量目标的适宜性及实现情况,及上年度目标的实现情况,本年度目标的阶段性实现情况,当目标没有实现时,采取的措施。" prop="target" >
          <el-input v-model="state.form.target" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="4.自上次审核以来签订了多少份合同(军)、交付情况,以及取得的绩效(顾客满意度情况、订货及销售收入、利润及增加情况;产值/利润递增情况;质量损失减少情况;产品一次交验合格率提升情况;取得的专利和奖励成果情况;顾客表扬方面的内容),按照年度统计数据或年递增率。" prop="quality">
          <el-input v-model="state.form.quality" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="5.总结自上次审核以来开展了哪些质量管理专项活动,特别是有效提高质量管理意识和质量管理技能、产品实物质量方面的管理改进活动,效果如何,以及纠正/预防措施落实情况。" prop="activity">
          <el-input v-model="state.form.activity" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="6.本年度内审时间、开出不符合项数量及整改验收;管理评审时间、改进事项及完成情况。" prop="audit">
          <el-input v-model="state.form.audit" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="7.公司的外包过程有哪些?如何控制以及风险管理的应用情况。" prop="epiboly">
          <el-input v-model="state.form.epiboly" :rows="4" type="textarea" :disabled="title === '查看'"/>
        </el-form-item>
        <el-form-item label="8.自上次审核以来资源投入情况(人员、环境、生产/检测设备等配置增加或者变动的数据),教育培训实施次数/人次等。" prop="resource">
          <el-input v-model="state.form.resource" :disabled="title === '查看'" :rows="4" type="textarea" />
        </el-form-item>
      </el-form>
      <template #footer v-if="title !== '查看'">
        <span class="dialog-footer">
            <el-button @click="handleClose" size="default">取 消</el-button>
            <el-button type="primary"   @click="onSubmit" size="default" v-preReClick>确认</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {onMounted, reactive, ref, toRefs} from 'vue'
import Editor from "@/components/Editor/index.vue";
import {ElMessage} from "element-plus";
import {addNotice} from "@/api/backManage/notice";
import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
import {addCompany, checkName, distributeCompany, editCompany, getCompany} from "@/api/onlineEducation/company";
import {verifyPhone} from "@/utils/validate";
import {addBasic, editBasic} from "@/api/companyInfo/basicInfo";
import Cookies from "js-cookie";
 
const dialogVisible = ref(false);
const title = ref("");
const busRef = ref();
const length = ref()
const emit = defineEmits(["getList"]);
const state = reactive({
  form: {
    id: '',
    companyId: null,
    companyName: '',
    basic: '',
    introduce: '',
    target: '',
    quality: '',
    activity: '',
    audit: '',
    epiboly: '',
    resource: '',
  },
  formRules:{
    companyName: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    basic: [{ required: true, message: '请输入', trigger: 'blur' }],
    introduce:[{ required: true, message: '请输入', trigger: 'blur' }],
    target: [{ required: true, message: '请输入', trigger: 'blur' }],
    quality: [{ required: true, message: '请输入', trigger: 'blur' }],
    activity: [{ required: true, message: '请输入', trigger: 'blur' }],
    audit: [{ required: true, message: '请输入', trigger: 'blur' }],
    epiboly: [{ required: true, message: '请输入', trigger: 'blur' }],
    resource: [{ required: true, message: '请输入', trigger: 'blur' }],
  },
  isAdmin: false,
  companyList: []
})
 
onMounted(() => {
 
})
const openDialog = async (type, value,companyList) => {
 
 
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  state.isAdmin = userInfo.userType === 0;
  if(state.isAdmin){
   state.companyList = companyList
  }
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  if(type === 'edit' || type === 'review') {
    state.form = JSON.parse(JSON.stringify(value));
    if(state.isAdmin){
      state.form.companyId = value.companyId
      state.form.companyName = value.companyName
    }
  }
  dialogVisible.value = true;
}
 
const onSubmit = async () => {
  const valid = await busRef.value.validate();
  if(!state.isAdmin){
    const userInfo = JSON.parse(Cookies.get('userInfo'))
    state.form.companyId = userInfo.companyId
  }
  if(valid){
    if(title.value === '新增'){
      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
      const res = await addBasic(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      busRef.value.clearValidate();
      reset();
      dialogVisible.value = false;
    }else if(title.value === '编辑'){
      const {...data} = JSON.parse(JSON.stringify(state.form))
      const res = await editBasic(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '编辑成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      busRef.value.clearValidate();
      reset();
      dialogVisible.value = false;
    }
  }
}
 
const handleClose = () => {
  busRef.value.clearValidate();
  reset();
  dialogVisible.value = false;
  emit("getList")
 
}
const reset = () => {
  state.form = {
    id: '',
    companyId: null,
    companyName: '',
    basic: '',
    introduce: '',
    target: '',
    quality: '',
    activity: '',
    audit: '',
    epiboly: '',
    resource: '',
 
  }
  state.companyList = []
}
defineExpose({
  openDialog
});
 
</script>
 
<style scoped lang="scss">
.notice{
  :deep(.el-form .el-form-item__label) {
    font-size: 15px;
  }
  .file {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
}
</style>