Browse Source

企业资质

yusheng 1 year ago
parent
commit
3f1803210d

+ 1 - 0
src/views/codeManagement/businessCode/components/codeSegmentEdit.vue

@@ -57,6 +57,7 @@
             <DictSelection
               dictName="编码间隔符"
               v-model="form.delimiter"
+              
             ></DictSelection>
           </el-form-item>
         </el-col>

+ 743 - 610
src/views/factoryModel/qualificationManagement/components/addOrEditDialog.vue

@@ -1,295 +1,406 @@
 <template>
-  <ele-modal custom-class="ele-dialog-form long-dialog-form"
-             :centered="true" :visible.sync="addOrEditDialogFlag" :title="title"
-             append-to-body
-             :close-on-click-modal="false" width="70%" :before-close="cancel" :maxable="true">
-
-        <el-tabs v-model="activeName" type="card" >
-          <el-tab-pane label="证书资质" name="QC">
-            <el-form ref="form" :model="form" :rules="rules" class="el-form-box">
-              <headerTitle title="基本信息"/>
-              <el-row :gutter="20">
-                <!--        <el-col :span="12">-->
-                <!--          <el-form-item label="编码:" prop="code" label-width="90px">-->
-                <!--            <el-input-->
-                <!--              :disabled="type=='view'"-->
-                <!--              v-model="form.code"-->
-                <!--              clearable-->
-                <!--              placeholder="请输入"-->
-                <!--            />-->
-                <!--          </el-form-item>-->
-                <!--        </el-col>-->
-                <el-col :span="12">
-                  <el-form-item label="名称" prop="name"
-                                label-width="90px"
-                                :rules=" {required: true, message: '请输入',trigger: 'blur' }">
-                    <el-input v-model="form.name" :disabled="type=='view'" clearable></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                  <el-form-item label="有效时间:" prop="date" label-width="90px">
-                    <el-date-picker
-                      :disabled="type=='view'"
-                      v-model="form.date"
-                      style="width: 100%;"
-                      type="daterange"
-                      value-format="yyyy-MM-dd"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      end-placeholder="结束日期"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-
-              </el-row>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <el-form-item label="资质类型:" prop="certificationType" label-width="90px">
-                    <el-select
-                      style="width: 100%"
-                      :disabled="type=='view'"
-                      v-model="form.certificationType"
-                      @change="changeCertificationType"
-                      filterable
-                    >
-                      <el-option
-                        v-for="item in qualificationOptions"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      >
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                  <el-form-item label="关联类型:" prop="relationName" label-width="90px">
-                    <el-input
-                      :disabled="type=='view'"
-                      v-model="form.relationName"
-                      readonly
-                      clearable
-                      @click.native="handleClick"
-                      placeholder="请选择"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <el-form-item label="备注" label-width="90px">
-                    <el-input type="textarea" v-model="form.remark" :disabled="type=='view'" clearable></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                  <el-form-item label="附件:" prop="accessory" label-width="90px">
-                    <fileUpload
-                      v-if="type!=='view'"
-                      v-model="form.accessory"
-                      module="main"
-                      :showLib="false"
-                      :limit="10"/>
-                    <div v-else>
-                      <el-link
-                        v-for="link in form.accessory"
-                        :key="link.id"
-                        type="primary"
-                        :underline="false"
-                        @click="downloadFile(link)">
-                        {{ link.name }}
-                      </el-link>
-                    </div>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <headerTitle title="资质信息"/>
-              <ele-pro-table ref="linkTable" :columns="columns" :datasource="form.detailsList" :toolkit="[]" height="300px"
-                             :need-page="false">
-                <!-- 表头工具栏 -->
-                <template v-slot:toolbar>
-
-                  <el-button v-if="type!=='view'" type="primary" @click="handleAdd">添加</el-button>
-                </template>
-                <template v-slot:name="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.name'" :rules="{
-            required: true,
-            message: '',
-            trigger: 'change'
-          }">
-                    <el-select v-if="type!=='view'" v-model="scope.row.name" clearable>
-                      <el-option :disabled="disabledToType(scope.row).includes(item.dictCode)"
-                                 v-for="item in dictList" :value="item.dictCode"
-                                 :label="item.dictValue"></el-option>
-                    </el-select>
-                    <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
-                    <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
-                    <span v-else>{{ getLabelName(dictList, scope.row.name) }}</span>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:code="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.code'" :rules="{
-            required: true,
-            message: '',
-            trigger: 'blur'
-          }">
-                    <el-input v-model="scope.row.code" :disabled="type=='view'" clearable></el-input>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:businessRange="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.businessRange'">
-                    <el-input type="textarea" v-model="scope.row.businessRange" :disabled="type=='view'" clearable></el-input>
-                  </el-form-item>
-                </template>
-                <template v-slot:startTime="scope">
-                  <el-form-item inline-message :prop="'detailsList.' + scope.$index + '.startTime'" :rules="{
-            required: true,
-            message: '',
-            trigger: 'change'
-
-          }">
-                    <el-date-picker
-                      :disabled="type=='view'"
-                      v-model="scope.row.startTime"
-                      type="date"
-                      style="width: 100%"
-                      value-format="yyyy-MM-dd"
-                      placeholder="选择日期">
-                    </el-date-picker>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:endTime="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.endTime'"
-                                :rules="{
-            required: true,
-            validator: validateEndDate(scope.row,scope.$index),
-            trigger: ['blur','change']
-          }">
-                    <el-date-picker
-                      :disabled="type=='view'"
-                      v-model="scope.row.endTime"
-                      type="date"
-                      style="width: 100%"
-                      value-format="yyyy-MM-dd"
-                      placeholder="选择日期">
-                    </el-date-picker>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:noticePersonName="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.noticePersonName'" :rules="{
-            required: true,
-            message: '',
-            trigger: ['blur','change']
-
-          }">
-                    <el-input
-                      :disabled="type=='view'"
-                      @click.native="openStaffSelection(scope.$index)"
-                      v-model="scope.row.noticePersonName"
-                      placeholder="请选择"
-                    ></el-input>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:accessory="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.accessory'" :rules="{
-            required: true,
-            message: '',
-            trigger: ['change','blur']
-          }">
-                    <fileUpload
-                      v-if="type!=='view'"
-                      v-model="scope.row.accessory"
-                      module="main"
-                      :showLib="false"
-                      :limit="10"/>
-                    <div v-else>
-                      <el-link
-                        v-for="link in scope.row.accessory"
-                        :key="link.id"
-                        type="primary"
-                        :underline="false"
-                        @click="downloadFile(link)">
-                        {{ link.name }}
-                      </el-link>
-                    </div>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:type="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.type'">
-                    <el-select v-if="type!=='view'" v-model="scope.row.type" clearable>
-                      <el-option v-for="item in typeList" :value="item.dictCode"
-                                 :label="item.dictValue"></el-option>
-                    </el-select>
-                    <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
-                    <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
-                    <span v-else>{{ getLabelName(typeList, scope.row.type) }}</span>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:level="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.level'">
-                    <el-select v-if="type!=='view'" v-model="scope.row.level" clearable>
-                      <el-option v-for="item in levelOptions" :value="item.dictCode"
-                                 :label="item.dictValue"></el-option>
-                    </el-select>
-                    <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
-                    <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
-                    <span v-else>{{ getLabelName(levelOptions, scope.row.type) }}</span>
-                  </el-form-item>
-
-                </template>
-                <template v-slot:remark="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.remark'">
-                    <el-input type="textarea" :disabled="type=='view'" v-model="scope.row.remark"></el-input>
-                  </el-form-item>
-                </template>
-                <template v-slot:status="scope">
-                  <el-form-item :prop="'detailsList.' + scope.$index + '.status'">
-                    <el-tag v-if="scope.row.status" :type="statusTagTypeList[scope.row.status]">
-                      {{ statusList[scope.row.status] }}
-                    </el-tag>
-                  </el-form-item>
-                </template>
-                <template v-slot:isRequired="{ column }">
-                  <span class="is-required">{{ column.label }}</span>
-                </template>
-                <template v-slot:action="{ row, $index }">
-                  <el-popconfirm
-                    class="ele-action"
-                    title="确定要删除该信息吗?"
-                    @confirm="handleRemove($index)"
+  <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    :visible.sync="addOrEditDialogFlag"
+    :title="title"
+    append-to-body
+    :close-on-click-modal="false"
+    width="70%"
+    :before-close="cancel"
+    :maxable="true"
+  >
+    <el-tabs v-model="activeName" type="card">
+      <el-tab-pane label="证书资质" name="QC">
+        <el-form ref="form" :model="form" :rules="rules" class="el-form-box">
+          <headerTitle title="基本信息" />
+          <el-row :gutter="20">
+            <!--        <el-col :span="12">-->
+            <!--          <el-form-item label="编码:" prop="code" label-width="90px">-->
+            <!--            <el-input-->
+            <!--              :disabled="type=='view'"-->
+            <!--              v-model="form.code"-->
+            <!--              clearable-->
+            <!--              placeholder="请输入"-->
+            <!--            />-->
+            <!--          </el-form-item>-->
+            <!--        </el-col>-->
+            <el-col :span="12">
+              <el-form-item
+                label="名称"
+                prop="name"
+                label-width="90px"
+                :rules="{ required: true, message: '请输入', trigger: 'blur' }"
+              >
+                <el-input
+                  v-model="form.name"
+                  :disabled="type == 'view'"
+                  clearable
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="有效时间:" prop="date" label-width="90px">
+                <el-date-picker
+                  :disabled="type == 'view'"
+                  v-model="form.date"
+                  style="width: 100%"
+                  type="daterange"
+                  value-format="yyyy-MM-dd"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item
+                label="资质类型:"
+                prop="certificationType"
+                label-width="90px"
+              >
+                <el-select
+                  style="width: 100%"
+                  :disabled="type == 'view'"
+                  v-model="form.certificationType"
+                  @change="changeCertificationType"
+                  filterable
+                >
+                  <el-option
+                    v-for="item in qualificationOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="关联类型:"
+                prop="relationName"
+                label-width="90px"
+                :rules="{
+                  required: ['1', '2', '3'].includes(form.certificationType)
+                    ? true
+                    : false,
+                  message: '请选择关联类型',
+                  trigger: 'blur'
+                }"
+              >
+                <el-input
+                  :disabled="type == 'view'"
+                  v-model="form.relationName"
+                  readonly
+                  clearable
+                  @click.native="handleClick"
+                  placeholder="请选择"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="备注" label-width="90px">
+                <el-input
+                  type="textarea"
+                  v-model="form.remark"
+                  :disabled="type == 'view'"
+                  clearable
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="附件:" prop="accessory" label-width="90px">
+                <fileUpload
+                  v-if="type !== 'view'"
+                  v-model="form.accessory"
+                  module="main"
+                  :showLib="false"
+                  :limit="10"
+                />
+                <div v-else>
+                  <el-link
+                    v-for="link in form.accessory"
+                    :key="link.id"
+                    type="primary"
+                    :underline="false"
+                    @click="downloadFile(link)"
+                  >
+                    {{ link.name }}
+                  </el-link>
+                </div>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <headerTitle title="资质信息" />
+          <ele-pro-table
+            ref="linkTable"
+            :columns="columns"
+            :datasource="form.detailsList"
+            :toolkit="[]"
+            height="300px"
+            :need-page="false"
+          >
+            <!-- 表头工具栏 -->
+            <template v-slot:toolbar>
+              <el-button
+                v-if="type !== 'view'"
+                type="primary"
+                @click="handleAdd"
+                >添加</el-button
+              >
+            </template>
+            <template v-slot:name="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.name'"
+                :rules="{
+                  required: true,
+                  message: '',
+                  trigger: 'change'
+                }"
+              >
+                <el-select
+                  v-if="type !== 'view'"
+                  v-model="scope.row.name"
+                  clearable
+                >
+                  <el-option
+                    :disabled="
+                      disabledToType(scope.row).includes(item.dictCode)
+                    "
+                    v-for="item in dictList"
+                    :value="item.dictCode"
+                    :label="item.dictValue"
+                  ></el-option>
+                </el-select>
+                <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
+                <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
+                <span v-else>{{ getLabelName(dictList, scope.row.name) }}</span>
+              </el-form-item>
+            </template>
+            <template v-slot:code="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.code'"
+                :rules="{
+                  required: true,
+                  message: '',
+                  trigger: 'blur'
+                }"
+              >
+                <el-input
+                  v-model="scope.row.code"
+                  :disabled="type == 'view'"
+                  clearable
+                ></el-input>
+              </el-form-item>
+            </template>
+            <template v-slot:businessRange="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.businessRange'"
+              >
+                <el-input
+                  type="textarea"
+                  v-model="scope.row.businessRange"
+                  :disabled="type == 'view'"
+                  clearable
+                ></el-input>
+              </el-form-item>
+            </template>
+            <template v-slot:startTime="scope">
+              <el-form-item
+                inline-message
+                :prop="'detailsList.' + scope.$index + '.startTime'"
+                :rules="{
+                  required: true,
+                  message: '',
+                  trigger: 'change'
+                }"
+              >
+                <el-date-picker
+                  :disabled="type == 'view'"
+                  v-model="scope.row.startTime"
+                  type="date"
+                  style="width: 100%"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </template>
+            <template v-slot:endTime="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.endTime'"
+                :rules="{
+                  required: true,
+                  validator: validateEndDate(scope.row, scope.$index),
+                  trigger: ['blur', 'change']
+                }"
+              >
+                <el-date-picker
+                  :disabled="type == 'view'"
+                  v-model="scope.row.endTime"
+                  type="date"
+                  style="width: 100%"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </template>
+            <template v-slot:noticePersonName="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.noticePersonName'"
+                :rules="{
+                  required: true,
+                  message: '',
+                  trigger: ['blur', 'change']
+                }"
+              >
+                <el-input
+                  :disabled="type == 'view'"
+                  @click.native="openStaffSelection(scope.$index)"
+                  v-model="scope.row.noticePersonName"
+                  placeholder="请选择"
+                ></el-input>
+              </el-form-item>
+            </template>
+            <template v-slot:accessory="scope">
+              <el-form-item
+                :prop="'detailsList.' + scope.$index + '.accessory'"
+                :rules="{
+                  required: true,
+                  message: '',
+                  trigger: ['change', 'blur']
+                }"
+              >
+                <fileUpload
+                  v-if="type !== 'view'"
+                  v-model="scope.row.accessory"
+                  module="main"
+                  :showLib="false"
+                  :limit="10"
+                />
+                <div v-else>
+                  <el-link
+                    v-for="link in scope.row.accessory"
+                    :key="link.id"
+                    type="primary"
+                    :underline="false"
+                    @click="downloadFile(link)"
+                  >
+                    {{ link.name }}
+                  </el-link>
+                </div>
+              </el-form-item>
+            </template>
+            <template v-slot:type="scope">
+              <el-form-item :prop="'detailsList.' + scope.$index + '.type'">
+                <el-select
+                  v-if="type !== 'view'"
+                  v-model="scope.row.type"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in typeList"
+                    :value="item.dictCode"
+                    :label="item.dictValue"
+                  ></el-option>
+                </el-select>
+                <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
+                <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
+                <span v-else>{{ getLabelName(typeList, scope.row.type) }}</span>
+              </el-form-item>
+            </template>
+            <template v-slot:level="scope">
+              <el-form-item :prop="'detailsList.' + scope.$index + '.level'">
+                <el-select
+                  v-if="type !== 'view'"
+                  v-model="scope.row.level"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in levelOptions"
+                    :value="item.dictCode"
+                    :label="item.dictValue"
+                  ></el-option>
+                </el-select>
+                <!--                <DictSelection v-if="type!=='view'" clearable dictName="客户/供应商资质类型" v-model="scope.row.type"-->
+                <!--                               @itemChange="(val)=>handleChangeType(val,scope.row)"></DictSelection>-->
+                <span v-else>{{
+                  getLabelName(levelOptions, scope.row.type)
+                }}</span>
+              </el-form-item>
+            </template>
+            <template v-slot:remark="scope">
+              <el-form-item :prop="'detailsList.' + scope.$index + '.remark'">
+                <el-input
+                  type="textarea"
+                  :disabled="type == 'view'"
+                  v-model="scope.row.remark"
+                ></el-input>
+              </el-form-item>
+            </template>
+            <template v-slot:status="scope">
+              <el-form-item :prop="'detailsList.' + scope.$index + '.status'">
+                <el-tag
+                  v-if="scope.row.status"
+                  :type="statusTagTypeList[scope.row.status]"
+                >
+                  {{ statusList[scope.row.status] }}
+                </el-tag>
+              </el-form-item>
+            </template>
+            <template v-slot:isRequired="{ column }">
+              <span class="is-required">{{ column.label }}</span>
+            </template>
+            <template v-slot:action="{ row, $index }">
+              <el-popconfirm
+                class="ele-action"
+                title="确定要删除该信息吗?"
+                @confirm="handleRemove($index)"
+              >
+                <template v-slot:reference>
+                  <el-link
+                    v-if="type !== 'view'"
+                    type="danger"
+                    :underline="false"
+                    icon="el-icon-delete"
                   >
-                    <template v-slot:reference>
-                      <el-link
-                        v-if="type!=='view'"
-                        type="danger"
-                        :underline="false"
-                        icon="el-icon-delete"
-                      >
-                        删除
-                      </el-link>
-                    </template>
-                  </el-popconfirm>
+                    删除
+                  </el-link>
                 </template>
-
-              </ele-pro-table>
-
-            </el-form>
-
-          </el-tab-pane>
-          <el-tab-pane v-if="form.processInstanceId" label="流程详情" name="processInstance">
-            <bpmDetail :id="form.processInstanceId"></bpmDetail>
-          </el-tab-pane>
-        </el-tabs>
-    <div slot="footer" v-if="activeName=='QC'">
-      <el-button v-if="type!=='view'" type="primary" @click="handleSave(false)">保存</el-button>
-      <el-button v-if="type!=='view'" type="primary" plan @click="handleSave(true)">提交</el-button>
+              </el-popconfirm>
+            </template>
+          </ele-pro-table>
+        </el-form>
+      </el-tab-pane>
+      <el-tab-pane
+        v-if="form.processInstanceId"
+        label="流程详情"
+        name="processInstance"
+      >
+        <bpmDetail :id="form.processInstanceId"></bpmDetail>
+      </el-tab-pane>
+    </el-tabs>
+    <div slot="footer" v-if="activeName == 'QC'">
+      <el-button
+        v-if="type !== 'view'"
+        type="primary"
+        @click="handleSave(false)"
+        >保存</el-button
+      >
+      <el-button
+        v-if="type !== 'view'"
+        type="primary"
+        plan
+        @click="handleSave(true)"
+        >提交</el-button
+      >
       <el-button @click="cancel">返回</el-button>
     </div>
     <staffSelection
@@ -307,342 +418,364 @@
   </ele-modal>
 </template>
 <script>
-import FileUpload from "@/components/upload/fileUpload.vue";
-import staffSelection from "./staffSelection.vue";
-import {
-  getProfessionCertificationById,
-  saveProfessionCertification,
-  updateProfessionCertificationById,
-  contactQcSubmit
-} from "@/api/qualification";
-import {getFile} from "@/api/system/file";
-import bpmDetail from "@/views/bpm/processInstance/businessDetail.vue";
-import {mapActions, mapGetters} from "vuex";
-import dictEnum from "@/enum/dict";
-import clientDialog from "@/views/factoryModel/qualificationManagement/components/clientDialog.vue";
-import vendorDialog from "@/views/factoryModel/qualificationManagement/components/vendorDialog.vue";
+  import FileUpload from '@/components/upload/fileUpload.vue';
+  import staffSelection from './staffSelection.vue';
+  import {
+    getProfessionCertificationById,
+    saveProfessionCertification,
+    updateProfessionCertificationById,
+    contactQcSubmit
+  } from '@/api/qualification';
+  import { getFile } from '@/api/system/file';
+  import bpmDetail from '@/views/bpm/processInstance/businessDetail.vue';
+  import { mapActions, mapGetters } from 'vuex';
+  import dictEnum from '@/enum/dict';
+  import clientDialog from '@/views/factoryModel/qualificationManagement/components/clientDialog.vue';
+  import vendorDialog from '@/views/factoryModel/qualificationManagement/components/vendorDialog.vue';
 
-export default {
-  name: "addOrEditDialog",
-  components: {vendorDialog, clientDialog, bpmDetail, FileUpload, staffSelection},
-  props: {
-    addOrEditDialogFlag: Boolean,
-    typeInfo: String,
-    typeList: Array
-
-  },
-  data() {
-    return {
-      title: '',
-      type: '',
-      activeName:'QC',
-      qualificationOptions: [
-        {
-          label: '客户资质',
-          value: '1'
+  export default {
+    name: 'addOrEditDialog',
+    components: {
+      vendorDialog,
+      clientDialog,
+      bpmDetail,
+      FileUpload,
+      staffSelection
+    },
+    props: {
+      addOrEditDialogFlag: Boolean,
+      typeInfo: String,
+      typeList: Array
+    },
+    data() {
+      return {
+        title: '',
+        type: '',
+        activeName: 'QC',
+        qualificationOptions: [
+          {
+            label: '客户资质',
+            value: '1'
+          },
+          {
+            label: '供应商资质',
+            value: '2'
+          },
+          {
+            label: '个人资质',
+            value: '3'
+          },
+          {
+            label: '企业资质',
+            value: '4'
+          },
+          {
+            label: '受托企业资质',
+            value: '5'
+          }
+        ],
+        levelOptions: [
+          {
+            dictValue: '初级',
+            dictCode: '1'
+          },
+          {
+            dictValue: '中级',
+            dictCode: '2'
+          },
+          {
+            dictValue: '高级',
+            dictCode: '3'
+          }
+        ],
+        defaultData: {
+          accessory: [],
+          name: '',
+          noticePersonId: '',
+          noticePersonName: '',
+          num: '',
+          remark: '',
+          businessRange: '',
+          type: '',
+          endTime: '',
+          startTime: ''
         },
-        {
-          label: '供应商资质',
-          value: '2'
+        form: {
+          accessory: [],
+          detailsList: [],
+          relationName: '',
+          name: '',
+          date: [],
+          remark: ''
         },
-        {
-          label: '个人资质',
-          value: '3'
-        }
-      ],
-      levelOptions: [
-        {
-          dictValue: '初级',
-          dictCode: '1'
+        rules: {
+          name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+          code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
+          certificationType: [
+            { required: true, message: '请选择资质类型', trigger: 'change' }
+          ],
+          // relationName: [{required: true, message: '请选择关联类型', trigger: 'change'}],
+          date: [
+            { required: true, message: '请选择有效时间', trigger: 'change' }
+          ]
         },
-        {
-          dictValue: '中级',
-          dictCode: '2'
+        curIndex: null,
+        StaffType: '',
+
+        statusList: {
+          10: '有效',
+          20: '无效',
+          30: '已过期'
         },
-        {
-          dictValue: '高级',
-          dictCode: '3'
+        statusTagTypeList: {
+          10: 'success',
+          20: 'info',
+          30: 'danger'
         }
-      ],
-      defaultData: {
-        accessory: [],
-        name: "",
-        noticePersonId: "",
-        noticePersonName: "",
-        num: "",
-        remark: "",
-        businessRange: "",
-        type: "",
-        endTime: "",
-        startTime: ""
+      };
+    },
+    computed: {
+      ...mapGetters(['dict']),
+      dictList() {
+        return this.dict[dictEnum['客户/供应商资质类型']] || [];
       },
-      form: {
-        accessory: [],
-        detailsList: [],
-        relationName: '',
-        name: '',
-        date: [],
-        remark: '',
-
+      columns() {
+        return [
+          {
+            type: 'index',
+            width: 55,
+            align: 'center'
+          },
+          {
+            label: '名称',
+            prop: 'name',
+            slot: 'name',
+            headerSlot: 'isRequired',
+            minWidth: 180,
+            align: 'center'
+          },
+          {
+            label: '编号',
+            prop: 'code',
+            slot: 'code',
+            headerSlot: 'isRequired',
+            minWidth: 120,
+            align: 'center'
+          },
+          {
+            label: '许可/经营范围',
+            prop: 'businessRange',
+            slot: 'businessRange',
+            minWidth: 140,
+            align: 'center'
+          },
+          {
+            label: '有效期起始日期',
+            prop: 'startTime',
+            slot: 'startTime',
+            headerSlot: 'isRequired',
+            minWidth: 160,
+            align: 'center'
+          },
+          {
+            label: '有效期截止日期',
+            prop: 'endTime',
+            slot: 'endTime',
+            headerSlot: 'isRequired',
+            minWidth: 160,
+            align: 'center'
+          },
+          {
+            label: '通知人',
+            prop: 'noticePersonName',
+            slot: 'noticePersonName',
+            headerSlot: 'isRequired',
+            minWidth: 140,
+            align: 'center'
+          },
+          {
+            label: '附件',
+            prop: 'accessory',
+            slot: 'accessory',
+            headerSlot: 'isRequired',
+            minWidth: 140
+          },
+          {
+            label: '等级',
+            prop: 'level',
+            slot: 'level',
+            minWidth: 140,
+            align: 'center'
+          },
+          {
+            label: '分类',
+            prop: 'type',
+            slot: 'type',
+            minWidth: 140,
+            align: 'center'
+          },
+          {
+            label: '备注',
+            prop: 'remark',
+            slot: 'remark',
+            minWidth: 140,
+            align: 'center'
+          },
+          {
+            label: '状态',
+            prop: 'status',
+            slot: 'status',
+            align: 'center'
+          },
+          {
+            action: 'action',
+            slot: 'action',
+            label: '操作',
+            align: 'center',
+            fixed: 'right'
+          }
+        ];
       },
-      rules: {
-        name: [{required: true, message: '请输入名称', trigger: 'blur'}],
-        code: [{required: true, message: '请输入编码', trigger: 'blur'}],
-        certificationType: [{required: true, message: '请选择资质类型', trigger: 'change'}],
-        relationName: [{required: true, message: '请选择关联类型', trigger: 'change'}],
-        date: [{required: true, message: '请选择有效时间', trigger: 'change'}],
+      disabledToType() {
+        return (row) => {
+          let list = this.form.detailsList.map((item) => item.name);
+          let dictCodeList = this.dictList.map((item) => item.dictCode);
+          let intersectionList = list.filter(
+            (v) => dictCodeList.indexOf(v) > -1
+          );
+          intersectionList = intersectionList.filter((v) => row.name !== v);
+          return intersectionList;
+        };
+      }
+    },
+    created() {
+      this.requestDict('客户/供应商资质类型');
+    },
+    methods: {
+      ...mapActions('dict', ['requestDict']),
+      getLabelName(arr, id) {
+        if (!id) return '';
+        return arr.find((item) => item.dictCode == id)?.dictValue;
       },
-      curIndex: null,
-      StaffType: '',
-
-      statusList: {
-        10: '有效',
-        20: '无效',
-        30: '已过期',
+      //删除资质
+      handleRemove(index) {
+        this.form.detailsList.splice(index, 1);
       },
-      statusTagTypeList: {
-        10: 'success',
-        20: 'info',
-        30: 'danger',
+      //结束日期验证
+      validateEndDate(row, index) {
+        return (rule, value, callback) => {
+          if (!value) return callback(new Error(''));
+          if (row.endTime && row.startTime && value < row.startTime) {
+            callback(new Error('截止日期不能小于起始日期'));
+          } else {
+            callback();
+          }
+        };
       },
-    }
-  },
-  computed: {
-    ...mapGetters(['dict']),
-    dictList() {
-      return this.dict[dictEnum['客户/供应商资质类型']] || [];
-    },
-    columns() {
-      return [
-        {
-          type: 'index',
-          width: 55,
-          align: 'center'
-        },
-        {
-          label: '名称',
-          prop: 'name',
-          slot: 'name',
-          headerSlot: 'isRequired',
-          minWidth: 180,
-          align: 'center'
-        },
-        {
-          label: '编号',
-          prop: 'code',
-          slot: 'code',
-          headerSlot: 'isRequired',
-          minWidth: 120,
-          align: 'center'
-        },
-        {
-          label: '许可/经营范围',
-          prop: 'businessRange',
-          slot: 'businessRange',
-          minWidth: 140,
-          align: 'center'
-        },
-        {
-          label: '有效期起始日期',
-          prop: 'startTime',
-          slot: 'startTime',
-          headerSlot: 'isRequired',
-          minWidth: 160,
-          align: 'center'
-        },
-        {
-          label: '有效期截止日期',
-          prop: 'endTime',
-          slot: 'endTime',
-          headerSlot: 'isRequired',
-          minWidth: 160,
-          align: 'center'
-        },
-        {
-          label: '通知人',
-          prop: 'noticePersonName',
-          slot: 'noticePersonName',
-          headerSlot: 'isRequired',
-          minWidth: 140,
-          align: 'center'
-        },
-        {
-          label: '附件',
-          prop: 'accessory',
-          slot: 'accessory',
-          headerSlot: 'isRequired',
-          minWidth: 140,
-        },
-        {
-          label: '等级',
-          prop: 'level',
-          slot: 'level',
-          minWidth: 140,
-          align: 'center'
-        },
-        {
-          label: '分类',
-          prop: 'type',
-          slot: 'type',
-          minWidth: 140,
-          align: 'center'
-        },
-        {
-          label: '备注',
-          prop: 'remark',
-          slot: 'remark',
-          minWidth: 140,
-          align: 'center'
-        },
-        {
-          label: '状态',
-          prop: 'status',
-          slot: 'status',
-          align: 'center',
-        },
-        {
-          action: 'action',
-          slot: 'action',
-          label: '操作',
-          align: 'center',
-          fixed: 'right'
+      //页面初始化
+      init(type, row = {}) {
+        this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情';
+        this.type = type;
+        if (type !== 'add') {
+          this.getCertificateInfo(row);
         }
-      ]
-    },
-    disabledToType() {
-      return (row) => {
-        let list = this.form.detailsList.map(item => item.name)
-        let dictCodeList = this.dictList.map(item => item.dictCode)
-        let intersectionList = list.filter((v) => dictCodeList.indexOf(v) > -1)
-        intersectionList = intersectionList.filter(v => row.name !== v)
-        return intersectionList
-      }
-    },
-  },
-  created() {
-    this.requestDict('客户/供应商资质类型');
-  },
-  methods: {
-    ...mapActions('dict', ['requestDict']),
-    getLabelName(arr, id) {
-      if (!id) return ''
-      return arr.find(item => item.dictCode == id)?.dictValue
-    },
-    //删除资质
-    handleRemove(index) {
-      this.form.detailsList.splice(index, 1)
-    },
-    //结束日期验证
-    validateEndDate(row, index) {
-      return (rule, value, callback) => {
-        if (!value) return callback(new Error(''))
-        if (
-          row.endTime &&
-          row.startTime &&
-          value < row.startTime
-        ) {
-          callback(new Error('截止日期不能小于起始日期'))
+      },
+
+      handleClick() {
+        switch (this.form.certificationType) {
+          case '1':
+            this.$refs.clientSelection.open();
+            break;
+          case '2':
+            this.$refs.vendorDialogRef.open();
+            break;
+          case '3':
+            this.StaffType = 2;
+            this.$refs.staffSelection.open([]);
+            break;
+        }
+      },
+      changeCertificationType(value) {
+        this.form.certificationType = value;
+        this.form.relationName = '';
+        this.form.relationId = '';
+      },
+      confirmSelection(obj) {
+        this.form.relationId = obj.id;
+        this.form.relationName = obj.name;
+        this.$forceUpdate();
+      },
+      async getCertificateInfo(row) {
+        this.form = await getProfessionCertificationById(row.id);
+        this.form.date = [this.form.startTime, this.form.endTime];
+      },
+      //打开选择负责人弹窗
+      openStaffSelection(index) {
+        this.curIndex = index;
+        this.StaffType = 1;
+        this.$refs.staffSelection.open([]);
+      },
+      //选择负责人回调
+      confirmStaffSelection(data, type) {
+        if (this.StaffType == 1) {
+          this.form.detailsList[this.curIndex].noticePersonName = data
+            .map((item) => item.name)
+            .toString();
+          this.form.detailsList[this.curIndex].noticePersonId = data
+            .map((item) => item.id)
+            .toString();
         } else {
-          callback()
+          this.form.relationId = data.map((item) => item.id).join(',');
+          this.form.relationName = data.map((item) => item.name).join(',');
         }
+      },
+      //新增
+      handleAdd() {
+        this.form.detailsList.push({ ...this.defaultData });
+      },
+      //修改资质证书
+      handleChangeType(val, row) {
+        if (!val) return (row.name = '');
+        row.name =
+          this.dictList.find((i) => i.dictCode == val)?.dictValue || '';
+      },
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      //保存/提交
+      handleSave(isSub) {
+        this.$refs.form.validate(async (valid) => {
+          if (!valid) return this.$message.warning('有必填项未填写,请检查');
+          if (!this.form.detailsList.length)
+            return this.$message.warning('至少保存一条资质信息');
+          this.form.startTime = this.form.date[0];
+          this.form.endTime = this.form.date[1];
+          let api =
+            this.type == 'add'
+              ? saveProfessionCertification
+              : updateProfessionCertificationById;
+          let id = await api(this.form);
+          if (isSub) {
+            let businessId = this.type == 'add' ? id : this.form.id;
+            await contactQcSubmit({
+              businessId: businessId,
+              certificationType: this.form.certificationType
+            });
+          }
+          this.$message.success('保存成功');
+          this.$emit('reload');
+          this.cancel();
+        });
+      },
+      //关闭弹窗
+      cancel() {
+        this.$emit('update:addOrEditDialogFlag', false);
       }
-    },
-    //页面初始化
-    init(type, row = {}) {
-      this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情'
-      this.type = type
-      if (type !== 'add') {
-        this.getCertificateInfo(row)
-      }
-    },
-
-    handleClick() {
-      switch (this.form.certificationType) {
-        case '1':
-          this.$refs.clientSelection.open();
-          break;
-        case '2':
-          this.$refs.vendorDialogRef.open();
-          break;
-        case '3':
-          this.StaffType = 2
-          this.$refs.staffSelection.open([]);
-          break;
-      }
-    },
-    changeCertificationType(value) {
-      this.form.certificationType = value;
-      this.form.relationName = '';
-      this.form.relationId = '';
-    },
-    confirmSelection(obj) {
-      this.form.relationId = obj.id
-      this.form.relationName = obj.name
-      this.$forceUpdate();
-    },
-    async getCertificateInfo(row) {
-      this.form = await getProfessionCertificationById(row.id)
-      this.form.date = [this.form.startTime, this.form.endTime]
-    },
-    //打开选择负责人弹窗
-    openStaffSelection(index) {
-      this.curIndex = index
-      this.StaffType = 1
-      this.$refs.staffSelection.open([]);
-    },
-    //选择负责人回调
-    confirmStaffSelection(data, type) {
-      if (this.StaffType == 1) {
-        this.form.detailsList[this.curIndex].noticePersonName = data.map((item) => item.name).toString();
-        this.form.detailsList[this.curIndex].noticePersonId = data.map((item) => item.id).toString();
-      } else {
-        this.form.relationId = data.map((item) => item.id).join(',');
-        this.form.relationName = data.map((item) => item.name).join(',');
-      }
-
-    },
-    //新增
-    handleAdd() {
-      this.form.detailsList.push({...this.defaultData})
-    },
-    //修改资质证书
-    handleChangeType(val, row) {
-      if (!val) return row.name = ''
-      row.name = this.dictList.find(i => i.dictCode == val)?.dictValue || ''
-
-    },
-    downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
-    },
-    //保存/提交
-    handleSave(isSub) {
-      this.$refs.form.validate(async (valid) => {
-        if (!valid) return this.$message.warning('有必填项未填写,请检查')
-        if (!this.form.detailsList.length) return this.$message.warning('至少保存一条资质信息')
-        this.form.startTime = this.form.date[0]
-        this.form.endTime = this.form.date[1]
-        let api = this.type == 'add' ? saveProfessionCertification : updateProfessionCertificationById
-        let id = await api(this.form)
-        if (isSub) {
-          let businessId = this.type == 'add' ? id : this.form.id
-          await contactQcSubmit({businessId: businessId, certificationType: this.form.certificationType})
-        }
-        this.$message.success('保存成功')
-        this.$emit('reload')
-        this.cancel()
-      })
-
-    },
-    //关闭弹窗
-    cancel() {
-      this.$emit('update:addOrEditDialogFlag', false)
-    },
-  }
-
-}
+    }
+  };
 </script>
 <style scoped lang="scss">
-:deep.el-form-item {
-  margin-bottom: 0
-}
+  :deep.el-form-item {
+    margin-bottom: 0;
+  }
 </style>