Просмотр исходного кода

Merge branch 'master' of http://119.23.210.103:3000/wy/mj_firm_former

cfort 3 лет назад
Родитель
Сommit
704608f935

+ 4 - 0
src/business/platform/form/formbuilder/constants/helpTip.js

@@ -159,6 +159,10 @@ export default {
     title: '关于多选',
     content: '此属性用于限制填写可以选择多个值,还是只能选中一个值。'
   },
+  allowCreate: {
+    title: '关于可添加',
+    content: '此属性用于限制是否支持搜索和允许用户添加新选项,仅数据来源为静态数据时生效'
+  },
   datasource: {
     title: '关于选项数据值来源',
     content: `此属性用于设置选项数据值来源是自定义固定的选项值/标签【静态数据】,还是通过【数据模版】的【值来源】类型。`

+ 412 - 339
src/business/platform/form/formbuilder/right-aside/editors/editor-options.vue

@@ -1,359 +1,432 @@
 <template>
-  <div class="panel panel-default">
-    <div class="panel-heading">选项配置</div>
+    <div class="panel panel-default">
+        <div class="panel-heading">选项配置</div>
+        <div class="panel-body">
+            <el-form-item v-if="fieldType === 'select'">
+                <template slot="label">是否多选<help-tip prop="multiple" /></template>
+                <el-switch v-model="fieldOptions.multiple" @change="setSelectDefaultValue" />
+            </el-form-item>
+            <el-radio-group
+                v-model="fieldOptions.datasource"
+                size="mini"
+                style="margin-bottom: 10px;"
+            >
+                <el-radio-button
+                    v-for="item in datasourceOptions"
+                    :key="item.value"
+                    :label="item.value"
+                >{{ item.label }}</el-radio-button>
+            </el-radio-group>
+            <help-tip prop="datasource" />
+            <!---=================自定义=============---->
+            <div v-if="datasource === 'custom' || !datasource">
+                <!-- 下拉框静态数据新增是否可创建 -->
+                <el-form-item v-if="fieldType === 'select'" class="label">
+                    <template slot="label">是否可添加<help-tip prop="allowCreate" /></template>
+                    <el-switch v-model="fieldOptions.allowCreate"/>
+                </el-form-item>
+                <vue-draggable
+                    v-model="itemOptions"
+                    v-bind="draggableOptions"
+                    class="list-group"
+                    @start="isDragging = true"
+                    @end="() => { isDragging = false }"
+                >
+                    <div
+                        v-for="(opt, i) in itemOptions"
+                        :key="i"
+                        class="list-group-item"
+                    >
+                        <div class="actions-left">
+                            <el-tooltip content="设为默认值">
+                                <el-checkbox v-if="fieldType === 'checkbox' || (fieldType === 'select' && fieldOptions.multiple)" v-model="opt.checked"/>
+                                <el-radio
+                                    v-else
+                                    v-model="defaultValue"
+                                    :label="i"
+                                    @click.native.prevent="handleDefaultValue(i)"
+                                ><span>&nbsp;&nbsp;</span></el-radio>
+                            </el-tooltip>
+                            <el-input
+                                v-model="opt.val"
+                                size="mini"
+                                placeholder="选项值"
+                            />
+                            <el-input
+                                v-model="opt.label"
+                                size="mini"
+                                placeholder="选项标签"
+                            />
+                        </div>
+                        <el-button-group class="actions">
+                            <el-button
+                                size="small"
+                                type="text"
+                                title="添加"
+                                icon="ibps-icon-add"
+                                @click="addOption(i)"
+                            />
+                            <el-button
+                                size="small"
+                                type="text"
+                                title="删除"
+                                icon="el-icon-delete"
+                                @click="removeOption(i)"
+                            />
+                            <el-button
+                                class="draggable"
+                                title="拖动排序"
+                                data-role="sort_choice"
+                                size="small"
+                                type="text"
+                                icon="ibps-icon-arrows"
+                            />
+                        </el-button-group>
+                    </div>
+                </vue-draggable>
+                <div class="more-actions">
+                    <div class="el-button el-button--text" @click="addOption">添加选项</div>
+                    <el-divider direction="vertical" />
+                    <div class="el-button el-button--text" @click="editOption">编辑选项</div>
+                    <el-divider direction="vertical" />
+                    <div class="el-button el-button--text" @click="optionTemplate">选项模版</div>
+                </div>
 
-    <div class="panel-body">
-      <el-form-item v-if="fieldType==='select'">
-        <template slot="label">是否多选<help-tip prop="multiple" /></template>
-        <el-switch
-          v-model="fieldOptions.multiple"
-          @change="setSelectDefaultValue"
-        />
-      </el-form-item>
-      <el-radio-group v-model="fieldOptions.datasource" size="mini" style="margin-bottom:10px;">
-        <el-radio-button
-          v-for="item in datasourceOptions"
-          :key="item.value"
-          :label="item.value"
-        >{{ item.label }}</el-radio-button>
-      </el-radio-group>
-      <help-tip prop="datasource" />
-      <!---=================自定义=============---->
-      <div v-if="datasource === 'custom' || !datasource ">
-        <vue-draggable
-          v-model="itemOptions"
-          v-bind="draggableOptions"
-          class="list-group"
-          @start="isDragging = true"
-          @end="()=>{isDragging= false}"
-        >
-          <div v-for="(opt,i) in itemOptions" :key="i" class="list-group-item">
-            <div class="actions-left">
-              <el-tooltip content="设为默认值">
-                <el-checkbox v-if="(fieldType==='checkbox' || (fieldType==='select' && fieldOptions.multiple))" v-model="opt.checked" />
-                <el-radio v-else v-model="defaultValue" :label="i" @click.native.prevent="handleDefaultValue(i)"><span>&nbsp;&nbsp;</span></el-radio>
-              </el-tooltip>
-              <el-input v-model="opt.val" size="mini" placeholder="选项值" />
-              <el-input v-model="opt.label" size="mini" placeholder="选项标签" />
+                <option-template
+                    :visible="optionTemplateVisible"
+                    :title="title"
+                    :options="choices"
+                    :is-template="isTemplate"
+                    @close="visible => optionTemplateVisible = visible"
+                    @callback="handleOptions"
+                />
             </div>
-            <el-button-group class="actions">
-              <el-button size="small" type="text" title="添加" icon="ibps-icon-add" @click="addOption(i)" />
-              <el-button size="small" type="text" title="删除" icon="el-icon-delete" @click="removeOption(i)" />
-              <el-button class="draggable" title="拖动排序" data-role="sort_choice" size="small" type="text" icon="ibps-icon-arrows" />
-            </el-button-group>
-          </div>
-        </vue-draggable>
-        <div class="more-actions">
-          <div class="el-button el-button--text" @click="addOption">添加选项 </div>
-          <el-divider direction="vertical" />
-          <div class="el-button el-button--text" @click="editOption">编辑选项 </div>
-          <el-divider direction="vertical" />
-          <div class="el-button el-button--text" @click="optionTemplate">选项模版 </div>
-        </div>
-
-        <option-template
-          :visible="optionTemplateVisible"
-          :title="title"
-          :options="choices"
-          :is-template="isTemplate"
-          @close="visible => optionTemplateVisible = visible"
-          @callback="handleOptions"
-        />
-      </div>
-      <!---=================值来源=============---->
-      <template v-else-if="datasource === 'valuesource'">
-        <el-form-item>
-          <template slot="label">值来源<help-tip prop="valueSource" /></template>
-          <ibps-data-template-selector2
-            v-model="fieldOptions.value_source"
-            placeholder="请选择值来源"
-            style="width:100%;"
-            @change="changeDataTemplateSelector"
-          />
-        </el-form-item>
-        <el-form-item>
-          <div slot="label">关联配置<help-tip prop="linkConfig" /></div>
-          <div class="el-form-item__content">
-            <el-button :disabled="disabledResultColumns" style="width:100%;" type="primary" size="mini" plain @click="settingDataTemplateConfig('value_source')">设置关联配置</el-button>
-          </div>
-        </el-form-item>
-        <el-form-item v-if="$utils.isNotEmpty(dynamicConditions)">
-          <div slot="label">动态参数<help-tip prop="dynamicCondition" /></div>
-          <div class="el-form-item__content">
-            <el-button :disabled="disabledDynamicConditions" style="width:100%;" type="primary" size="mini" plain @click="settingDataTemplateCondition('value_source')">设置动态参数</el-button>
-          </div>
-        </el-form-item>
-        <template v-if="fieldType !== 'checkbox' && $utils.isNotEmpty(resultColumns)">
-          <el-form-item>
-            <div slot="label">联动数据<help-tip prop="linkData" /></div>
-            <div class="el-form-item__content">
-              <el-button :disabled="disabledResultColumns" style="width:100%;" type="primary" size="mini" plain @click="settingDataTemplateLinkData('value_source')">设置联动数据</el-button>
-            </div>
-          </el-form-item>
-          <el-form-item>
-            <div slot="label">关联属性<help-tip prop="linkAttr" /></div>
-            <div class="el-form-item__content">
-              <el-button :disabled="disabledResultColumns" style="width:100%;" type="primary" size="mini" plain @click="settingDataTemplateLinkAttr('value_source')">设置关联属性</el-button>
-            </div>
-          </el-form-item>
-        </template>
+            <!---=================值来源=============---->
+            <template v-else-if="datasource === 'valuesource'">
+                <el-form-item>
+                    <template slot="label">值来源<help-tip prop="valueSource" /></template>
+                    <ibps-data-template-selector2
+                        v-model="fieldOptions.value_source"
+                        placeholder="请选择值来源"
+                        style="width: 100%;"
+                        @change="changeDataTemplateSelector"
+                    />
+                </el-form-item>
+                <el-form-item>
+                    <div slot="label">关联配置<help-tip prop="linkConfig" /></div>
+                    <div class="el-form-item__content">
+                        <el-button
+                            :disabled="disabledResultColumns"
+                            style="width: 100%;"
+                            type="primary"
+                            size="mini"
+                            plain
+                            @click="settingDataTemplateConfig('value_source')"
+                        >设置关联配置</el-button>
+                    </div>
+                </el-form-item>
+                <el-form-item v-if="$utils.isNotEmpty(dynamicConditions)">
+                    <div slot="label">动态参数<help-tip prop="dynamicCondition" /></div>
+                    <div class="el-form-item__content">
+                        <el-button
+                            :disabled="disabledDynamicConditions"
+                            style="width: 100%;"
+                            type="primary"
+                            size="mini"
+                            plain
+                            @click="settingDataTemplateCondition('value_source')"
+                        >设置动态参数</el-button>
+                    </div>
+                </el-form-item>
+                <template v-if="fieldType !== 'checkbox' && $utils.isNotEmpty(resultColumns)">
+                    <el-form-item>
+                        <div slot="label">联动数据<help-tip prop="linkData" /></div>
+                        <div class="el-form-item__content">
+                            <el-button
+                                :disabled="disabledResultColumns"
+                                style="width: 100%;"
+                                type="primary"
+                                size="mini"
+                                plain
+                                @click="settingDataTemplateLinkData('value_source')"
+                            >设置联动数据</el-button>
+                        </div>
+                    </el-form-item>
+                    <el-form-item>
+                        <div slot="label">关联属性<help-tip prop="linkAttr" /></div>
+                        <div class="el-form-item__content">
+                            <el-button
+                                :disabled="disabledResultColumns"
+                                style="width: 100%;"
+                                type="primary"
+                                size="mini"
+                                plain
+                                @click="settingDataTemplateLinkAttr('value_source')"
+                            >设置关联属性</el-button>
+                        </div>
+                    </el-form-item>
+                </template>
 
-        <!--数据模版-参数配置-->
-        <data-template-config
-          :visible="dataTemplateConfigVisible"
-          :columns="resultColumns"
-          :data="fieldItem.field_options.link_config"
-          @callback="setDataTemplateConfig"
-          @close="visible => dataTemplateConfigVisible = visible"
-        />
+                <!--数据模版-参数配置-->
+                <data-template-config
+                    :visible="dataTemplateConfigVisible"
+                    :columns="resultColumns"
+                    :data="fieldItem.field_options.link_config"
+                    @callback="setDataTemplateConfig"
+                    @close="visible => dataTemplateConfigVisible = visible"
+                />
 
-        <!--数据模版-动态参数配置-->
-        <data-template-condition
-          :visible="dataTemplateConditionVisible"
-          :conditions="dynamicConditions"
-          :data="fieldItem.field_options.link_condition"
-          :fields="formFields"
-          @callback="setDataTemplateCondition"
-          @close="visible => dataTemplateConditionVisible = visible"
-        />
+                <!--数据模版-动态参数配置-->
+                <data-template-condition
+                    :visible="dataTemplateConditionVisible"
+                    :conditions="dynamicConditions"
+                    :data="fieldItem.field_options.link_condition"
+                    :fields="formFields"
+                    @callback="setDataTemplateCondition"
+                    @close="visible => dataTemplateConditionVisible = visible"
+                />
 
-        <!--数据模版-联动数据配置-->
-        <data-template-linkdata
-          :visible="dataTemplateLinkDataVisible"
-          :columns="resultColumns"
-          :data="fieldItem.field_options.link_linkage"
-          :fields="formFields"
-          @callback="setDataTemplateLinkData"
-          @close="visible => dataTemplateLinkDataVisible = visible"
-        />
-        <!--数据模版-联动属性配置-->
-        <data-template-linkdata
-          :visible="dataTemplateLinkAttrVisible"
-          :columns="resultColumns"
-          :data="fieldItem.field_options.link_attr"
-          :fields="formLabelFields"
-          @callback="setDataTemplateLinkAttr"
-          @close="visible => dataTemplateLinkAttrVisible = visible"
-        />
-      </template>
+                <!--数据模版-联动数据配置-->
+                <data-template-linkdata
+                    :visible="dataTemplateLinkDataVisible"
+                    :columns="resultColumns"
+                    :data="fieldItem.field_options.link_linkage"
+                    :fields="formFields"
+                    @callback="setDataTemplateLinkData"
+                    @close="visible => dataTemplateLinkDataVisible = visible"
+                />
+                <!--数据模版-联动属性配置-->
+                <data-template-linkdata
+                    :visible="dataTemplateLinkAttrVisible"
+                    :columns="resultColumns"
+                    :data="fieldItem.field_options.link_attr"
+                    :fields="formLabelFields"
+                    @callback="setDataTemplateLinkAttr"
+                    @close="visible => dataTemplateLinkAttrVisible = visible"
+                />
+            </template>
 
-      <!---=================动态数据=============---->
-      <template v-else-if="datasource === 'dynamic'">
-        <el-form-item label-width="0">
-          <el-radio-group v-model="fieldOptions.remoteType">
-            <el-radio :label="variable">赋值变量</el-radio>
-            <el-radio :label="func">动态方法</el-radio>
-          </el-radio-group>
-          <el-input v-model="fieldOptions.remoteValue" :placeholder="fieldOptions.remoteType?'赋值变量key':'动态方法名'" />
-        </el-form-item>
-        <el-form-item label-width="0">
-          <el-input v-model="fieldOptions.remoteValueKey" placeholder="请输入值">
-            <div slot="prepend" style="width:30px;">值</div>
-          </el-input>
-        </el-form-item>
-        <el-form-item label-width="0">
-          <el-input v-model="fieldOptions.remoteLabelKey" placeholder="请输入标签">
-            <div slot="prepend" style="width:30px;">标签</div>
-          </el-input>
-        </el-form-item>
-      </template>
+            <!---=================动态数据=============---->
+            <template v-else-if="datasource === 'dynamic'">
+                <el-form-item label-width="0">
+                    <el-radio-group v-model="fieldOptions.remoteType">
+                        <el-radio :label="variable">赋值变量</el-radio>
+                        <el-radio :label="func">动态方法</el-radio>
+                    </el-radio-group>
+                    <el-input v-model="fieldOptions.remoteValue" :placeholder="fieldOptions.remoteType ? '赋值变量key' : '动态方法名'"/>
+                </el-form-item>
+                <el-form-item label-width="0">
+                    <el-input v-model="fieldOptions.remoteValueKey" placeholder="请输入值">
+                        <div slot="prepend" style="width: 30px;">值</div>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label-width="0">
+                    <el-input v-model="fieldOptions.remoteLabelKey" placeholder="请输入标签">
+                        <div slot="prepend" style="width: 30px;">标签</div>
+                    </el-input>
+                </el-form-item>
+            </template>
+        </div>
     </div>
-  </div>
 </template>
 
 <script>
-import VueDraggable from 'vuedraggable'
-import OptionTemplate from '../components/option-template'
-import EditorMixin from '../mixins/editor'
-import DataTemplateMixin from '../mixins/data-template'
+    import VueDraggable from 'vuedraggable'
+    import OptionTemplate from '../components/option-template'
+    import EditorMixin from '../mixins/editor'
+    import DataTemplateMixin from '../mixins/data-template'
 
-import IbpsDataTemplateSelector2 from '@/business/platform/data/dataTemplate/selector2'
-import DataTemplateConfig from '../components/data-template-config'
-import DataTemplateCondition from '../components/data-template-condition'
-import DataTemplateLinkdata from '../components/data-template-linkdata'
+    import IbpsDataTemplateSelector2 from '@/business/platform/data/dataTemplate/selector2'
+    import DataTemplateConfig from '../components/data-template-config'
+    import DataTemplateCondition from '../components/data-template-condition'
+    import DataTemplateLinkdata from '../components/data-template-linkdata'
 
-export default {
-  components: {
-    VueDraggable,
-    OptionTemplate,
-    IbpsDataTemplateSelector2,
-    DataTemplateConfig,
-    DataTemplateCondition,
-    DataTemplateLinkdata
-  },
-  mixins: [EditorMixin, DataTemplateMixin],
-  data() {
-    return {
-      title: '选项模版',
-      choices: [],
-      isTemplate: false,
-      optionTemplateVisible: false,
-      isDragging: false,
-      datasourceOptions: [{
-        value: 'custom',
-        label: '静态数据'
-      }, {
-        value: 'valuesource',
-        label: '值来源'
-      }
-      // {
-      //   value: 'dynamic',
-      //   label: '动态数据'
-      // }
-      //  {
-      //   key: 'dictionary',
-      //   value: '数据字典'
-      // }
-      ],
-      draggableOptions: {
-        handle: '.draggable',
-        ghostClass: 'sortable-ghost',
-        distance: 1,
-        disabled: false,
-        animation: 200,
-        axis: 'y'
-      },
-      loading: false,
-      dataSourceOptions: []
-    }
-  },
-  computed: {
-    itemOptions: {
-      get() {
-        return this.fieldOptions.options || []
-      },
-      set(val) {
-        this.fieldOptions.options = val
-      }
-    },
-    datasource() {
-      return this.fieldOptions.datasource || 'custom'
-    },
-    defaultValue: {
-      get() {
-        const defaultOption = this.fieldOptions.options.findIndex((option) => option.checked === true)
-        return defaultOption !== -1 ? defaultOption : void 0
-      },
-      set(value) {
-        this.fieldOptions.options.forEach((option, i) => {
-          option.checked = i === value
-        })
-        this.handleOptions(JSON.parse(JSON.stringify(this.fieldOptions.options)))
-      }
+    export default {
+        components: {
+            VueDraggable,
+            OptionTemplate,
+            IbpsDataTemplateSelector2,
+            DataTemplateConfig,
+            DataTemplateCondition,
+            DataTemplateLinkdata
+        },
+        mixins: [EditorMixin, DataTemplateMixin],
+        data() {
+            return {
+                title: '选项模版',
+                choices: [],
+                isTemplate: false,
+                optionTemplateVisible: false,
+                isDragging: false,
+                datasourceOptions: [
+                    {
+                        value: 'custom',
+                        label: '静态数据'
+                    },
+                    {
+                        value: 'valuesource',
+                        label: '值来源'
+                    }
+                    // {
+                    //     value: 'dynamic',
+                    //     label: '动态数据'
+                    // },
+                    // {
+                    //     key: 'dictionary',
+                    //     value: '数据字典'
+                    // }
+                ],
+                draggableOptions: {
+                    handle: '.draggable',
+                    ghostClass: 'sortable-ghost',
+                    distance: 1,
+                    disabled: false,
+                    animation: 200,
+                    axis: 'y'
+                },
+                loading: false,
+                dataSourceOptions: []
+            }
+        },
+        computed: {
+            itemOptions: {
+                get() {
+                    return this.fieldOptions.options || []
+                },
+                set(val) {
+                    this.fieldOptions.options = val
+                }
+            },
+            datasource() {
+                return this.fieldOptions.datasource || 'custom'
+            },
+            defaultValue: {
+                get() {
+                    const defaultOption = this.fieldOptions.options.findIndex(option => option.checked === true)
+                    return defaultOption !== -1 ? defaultOption : void 0
+                },
+                set(value) {
+                    this.fieldOptions.options.forEach((option, i) => {
+                        option.checked = i === value
+                    })
+                    this.handleOptions(JSON.parse(JSON.stringify(this.fieldOptions.options)))
+                }
+            }
+        },
+        methods: {
+            addOption(i = -1, type) {
+                const newOption = {
+                    val: '',
+                    label: '选项',
+                    disabled: false
+                }
+                if (i > -1) {
+                    this.itemOptions.splice(i + 1, 0, newOption)
+                } else {
+                    this.itemOptions.push(newOption)
+                }
+            },
+            removeOption(i) {
+                this.itemOptions.splice(i, 1)
+            },
+            editOption() {
+                this.title = '编辑选项'
+                this.choices = JSON.parse(JSON.stringify(this.itemOptions))
+                this.isTemplate = false
+                this.optionTemplateVisible = true
+            },
+            optionTemplate(i) {
+                this.title = '选项模版'
+                this.choices = []
+                this.isTemplate = true
+                this.optionTemplateVisible = true
+            },
+            handleOptions(data) {
+                this.itemOptions = data
+            },
+            setSelectDefaultValue() {
+                this.itemOptions.forEach(option => {
+                    option.checked = false
+                })
+                this.setDefaultValue()
+            },
+            handleDefaultValue(value) {
+                const defaultOption = this.itemOptions.findIndex(option => option.checked === true)
+                this.defaultValue = defaultOption !== value ? value : void 0
+            },
+            changeDataTemplateSelector(data, val, oldVal) {
+                if (data && val !== oldVal) {
+                    this.setDefaultValue()
+                    this.setDataTemplateDefaultValue()
+                }
+                this.changeDataSource(val, 'value_source')
+            }
+        }
     }
-  },
-  methods: {
-    addOption(i = -1, type) {
-      const newOption = {
-        val: '',
-        label: '选项',
-        disabled: false
-      }
-      if (i > -1) {
-        this.itemOptions.splice(i + 1, 0, newOption)
-      } else {
-        this.itemOptions.push(newOption)
-      }
-    },
-    removeOption(i) {
-      this.itemOptions.splice(i, 1)
-    },
-    editOption() {
-      this.title = '编辑选项'
-      this.choices = JSON.parse(JSON.stringify(this.itemOptions))
-      this.isTemplate = false
-      this.optionTemplateVisible = true
-    },
-    optionTemplate(i) {
-      this.title = '选项模版'
-      this.choices = []
-      this.isTemplate = true
-      this.optionTemplateVisible = true
-    },
-    handleOptions(data) {
-      this.itemOptions = data
-    },
-    setSelectDefaultValue() {
-      this.itemOptions.forEach((option) => {
-        option.checked = false
-      })
-      this.setDefaultValue()
-    },
-    handleDefaultValue(value) {
-      const defaultOption = this.itemOptions.findIndex((option) => option.checked === true)
-      this.defaultValue = defaultOption !== value ? value : void 0
-    },
-    changeDataTemplateSelector(data, val, oldVal) {
-      if (data && val !== oldVal) {
-        this.setDefaultValue()
-        this.setDataTemplateDefaultValue()
-      }
-      this.changeDataSource(val, 'value_source')
-    }
-  }
-}
 </script>
 <style lang="scss" scoped>
-  .list-group {
-    display: flex;
-    flex-direction: column;
-    padding-left: 0;
-    margin-bottom: 0;
-  .list-group-item {
-    position: relative;
-    display: block;
-    padding: 5px;
-    margin-bottom: -1px;
-    .actions-left{
-      height: 24px;
-      line-height: 24px;
-      .el-input {
-        display: inline-block;
-        width: 34%;
-        vertical-align: middle;
-        padding-right: 10px;
-      }
-      .el-checkbox{
-        margin-right: 10px;
-      }
-      .el-radio{
-        margin-right: 0px;
-      }
+    .list-group {
+        display: flex;
+        flex-direction: column;
+        padding-left: 0;
+        margin-bottom: 0;
+        .list-group-item {
+            position: relative;
+            display: block;
+            padding: 5px;
+            margin-bottom: -1px;
+            .actions-left {
+                height: 24px;
+                line-height: 24px;
+                .el-input {
+                    display: inline-block;
+                    width: 34%;
+                    vertical-align: middle;
+                    padding-right: 10px;
+                }
+                .el-checkbox {
+                    margin-right: 10px;
+                }
+                .el-radio {
+                    margin-right: 0px;
+                }
+            }
+            .actions {
+                position: absolute;
+                width: 60px;
+                top: 2px;
+                right: 0;
+                line-height: 20px;
+                padding-left: 1px;
+                .el-button {
+                    padding-right: 4px;
+                    margin-right: 2px;
+                }
+                [data-role='sort_choice'] {
+                    cursor: move;
+                }
+            }
+        }
+        .no-move {
+            transition: transform 0s;
+        }
+        .sortable-ghost {
+            opacity: 0.5;
+            background: #c8ebfb;
+        }
     }
-
-    .actions {
-      position: absolute;
-      width: 60px;
-      top: 2px;
-      right: 0;
-      line-height: 20px;
-      padding-left: 1px;
-      .el-button {
-        padding-right: 4px;
-        margin-right: 2px;
-      }
-      [data-role="sort_choice"]{
-          cursor: move
-      }
+    .more-actions {
+        text-align: right;
+        margin-top: 5px;
+        margin-right: 10px;
+        .el-button {
+            padding-right: 0;
+            margin-right: 0;
+        }
     }
-  }
-
-  .no-move {
-    transition: transform 0s;
-  }
-  .sortable-ghost {
-    opacity: 0.5;
-    background: #c8ebfb;
-  }
-}
-  .more-actions {
-    text-align: right;
-    margin-top: 5px;
-    margin-right:10px;
-    .el-button {
-      padding-right: 0;
-      margin-right: 0;
+    .label {
+        ::v-deep .el-form-item__label {
+            width: 100px !important;
+        }
     }
-  }
-
 </style>

+ 76 - 121
src/business/platform/form/formrender/dynamic-form/dynamic-form-field.vue

@@ -3,9 +3,7 @@
         <!-- 单行文本、 多行文本、数字-->
         <template v-if="fieldType === 'text' || fieldType === 'textarea' || fieldType === 'number'">
             <template v-if="readonlyText">
-                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
-                    {{ dataModel || '/' }}
-                </div>
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">{{ dataModel || '/' }}</div>
             </template>
 
             <el-dropdown
@@ -16,13 +14,15 @@
                 trigger="click"
                 @command="handleCommand"
             >
-                <!-- <el-dropdown
-                    v-else-if="fieldType==='text'||fieldType==='textarea'"  :style="{width:width}" size="mini"
-                    placement="top-start"
-                    trigger="click"
-                    @click.native="reqPhrase($store.getters.userInfo.employee.groupID,field)"
-                    @command="handleCommand"
-                > -->
+            <!-- <el-dropdown
+                v-else-if="fieldType==='text'||fieldType==='textarea'"
+                :style="{width:width}"
+                size="mini"
+                @click.native="reqPhrase($store.getters.userInfo.employee.groupID,field)"
+                placement="top-start"
+                trigger="click"
+                @command="handleCommand"
+            > -->
                 <el-input
                     v-model="dataModel"
                     :placeholder="placeholder"
@@ -99,9 +99,7 @@
         <!-- 单项选择 -->
         <template v-else-if="fieldType === 'radio'">
             <template v-if="readonlyText">
-                <div
-                    v-if="$utils.isNotEmpty(dataModel)"
-                    :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                <div v-if="$utils.isNotEmpty(dataModel)" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
                     {{ dataModel | optionsFilter(dataOptions, 'label', 'val') }}
                 </div>
                 <div v-else :class="isTable ? '' : 'ibps-field-text-no'">/</div>
@@ -132,35 +130,28 @@
             <template v-if="readonlyText">
                 <template v-if="checkboxDataModel && checkboxDataModel.length > 0">
                     <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''">
-                        <span
-                            v-for="(v, i) in checkboxDataModel"
-                            :key="i"
-                            class="ibps-mr-5"
-                        >
+                        <span v-for="(v, i) in checkboxDataModel" :key="i" class="ibps-mr-5">
                             {{ v | optionsFilter(dataOptions, 'label', 'val') }}
                         </span>
                     </div>
                 </template>
             </template>
-            <el-checkbox-group
-                v-else
-                v-model="checkboxDataModel"
-                v-on="$listeners"
-            >
+            <el-checkbox-group v-else v-model="checkboxDataModel" v-on="$listeners">
                 <component
                     :is="fieldOptions.button ? 'el-checkbox-button' : 'el-checkbox'"
                     v-for="o in dataOptions"
                     :key="o.val"
                     :label="o.val"
                     :border="fieldOptions.border"
-                    :style="{display: fieldOptions.arrangement === 'vertical' ? 'block' : null}">
+                    :style="{ display: fieldOptions.arrangement === 'vertical' ? 'block' : null }"
+                >
                     {{ o.label }}
                 </component>
             </el-checkbox-group>
         </template>
 
         <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-        <ibps-custom-dialog v-else-if="fieldType === 'customDialog'" :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''" -->
+        <ibps-custom-dialog v-else-if="fieldType === 'customDialog'" :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"></ibps-custom-dialog> -->
 
         <!-- 下拉框 -->
         <div v-else-if="fieldType === 'select' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
@@ -169,11 +160,7 @@
                 <template v-if="multipleSelect">
                     <template v-if="selectDataModel && selectDataModel.length > 0">
                         <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''">
-                            <span
-                                v-for="(v, i) in selectDataModel"
-                                :key="i"
-                                class="ibps-mr-5"
-                            >
+                            <span v-for="(v, i) in selectDataModel" :key="i" class="ibps-mr-5">
                                 {{ v | optionsFilter(dataOptions, 'label', 'val') }}
                             </span>
                         </div>
@@ -196,20 +183,17 @@
                 :style="{ width: width }"
                 :multiple="multipleSelect"
                 :clearable="clearable"
+                :filterable="allowCreate"
+                :allow-create="allowCreate"
                 v-on="$listeners"
             >
-                <el-option
-                    v-for="o in dataOptions"
-                    :key="o.val"
-                    :label="o.label"
-                    :value="o.val"
-                />
+                <el-option v-for="o in dataOptions" :key="o.val" :label="o.label" :value="o.val" />
             </el-select>
         </template>
         <!-- 开关 -->
         <template v-else-if="fieldType === 'switch'">
             <template v-if="readonlyText">
-                <el-tag v-if="$utils.isNotEmpty(dataModel)" :class=" isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                <el-tag v-if="$utils.isNotEmpty(dataModel)" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
                     {{ dataModel | optionsFilter(switchOptions, 'label', 'val') }}
                 </el-tag>
             </template>
@@ -260,9 +244,7 @@
         <!-- 评分 -->
         <template v-else-if="fieldType === 'rate'">
             <template v-if="readonlyText">
-                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
-                    {{ dataModel || '/' }}
-                </div>
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">{{ dataModel || '/' }}</div>
             </template>
             <el-rate
                 v-else
@@ -276,12 +258,12 @@
                 v-on="$listeners"
             />
         </template>
+
         <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
         <ibps-custom-dialog v-else-if="fieldType === 'customDialog'" :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"></ibps-custom-dialog> -->
 
         <!-- 日期控件 -->
-        <template
-            v-else-if="fieldType === 'datePicker' || fieldType === 'currentTime' || fieldType === 'currentDate'">
+        <template v-else-if="fieldType === 'datePicker' || fieldType === 'currentTime' || fieldType === 'currentDate'">
             <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
                 {{ dataModel | dateFormat(datefmt, datefmt) || '/' }}
             </div>
@@ -319,7 +301,11 @@
         <!-- =======================增强字段==============================-->
         <!--富文本框-->
         <template v-else-if="fieldType === 'editor'">
-            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'" v-html="$utils.formatText(dataModel)"/>
+            <div
+                v-if="readonlyText"
+                :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'"
+                v-html="$utils.formatText(dataModel)"
+            ></div>
             <ibps-ueditor
                 v-else
                 v-model="dataModel"
@@ -359,9 +345,7 @@
                 :readonly-text="readonlyText"
                 v-on="$listeners"
             />
-            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
-                {{ dataModel || '/' }}
-            </div>
+            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">{{ dataModel || '/' }}</div>
         </template>
 
         <!-- 上传附件-->
@@ -464,9 +448,7 @@
                 :style="{ width: width }"
                 v-on="$listeners"
             />
-            <div v-if="fieldOptions.is_street && readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
-                {{ streetValue || '/' }}
-            </div>
+            <div v-if="fieldOptions.is_street && readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">{{ streetValue || '/' }}</div>
             <template v-else>
                 <p></p>
                 <el-input
@@ -578,7 +560,7 @@
         </Dictionaryitem>
         <!-- =======================其它字段==============================-->
         <!-- 文本-->
-        <span v-else-if="fieldType === 'label'" :class=" isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+        <span v-else-if="fieldType === 'label'" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
             <template v-if="value">{{ value || '/' }}</template>
             <template v-else>{{ placeholder || '/' }}</template>
         </span>
@@ -629,7 +611,7 @@
             Dictionaryitem: Dictionaryitem
         },
         filters: {
-            //定义过滤器
+            // 定义过滤器
             ellipsis(value) {
                 if (!value) return ''
                 if (value.length > 40) {
@@ -646,7 +628,8 @@
                 type: Boolean,
                 default: false
             },
-            formData: [Object, Array], // 所有字段数据,(包含主主子表)
+            // 所有字段数据,(包含主主子表)
+            formData: [Object, Array],
             field: {
                 type: Object,
                 required: true
@@ -659,8 +642,10 @@
                 type: String,
                 default: 'text'
             },
-            code: String, // 表名
-            row: [String, Number], // 子表行数
+            // 表名
+            code: String,
+            // 子表行数
+            row: [String, Number],
             params: {
                 type: Object
             }
@@ -796,9 +781,7 @@
                     return (this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date'])
                 }
             },
-            /**
-             * 日期格式处理
-             */
+            // 日期格式处理
             dateDealFmt() {
                 return DateFormatUtil.dealFmt(this.datefmt)
             },
@@ -811,45 +794,35 @@
                 // 根据自定义日期格式的配置
                 return this.dateDealFmt.dateType || 'datetime'
             },
-            /**
-             * 单选、多选、下拉等选项
-             */
+            // 单选、多选、下拉等选项
             dataOptions() {
                 return this.field.field_options['options'] || this.ajaxOptions
             },
-            /**
-             * switch选项
-             */
+            // switch选项
             switchOptions() {
                 return FormUtils.getSwitchOptions(this.field.field_options)
             },
-            /**
-             *  占位符
-             */
+            // 占位符
             placeholder() {
                 return !this.readonly ? this.fieldOptions['placeholder'] : ''
             },
-            /**
-             * 下拉占位符
-             */
+            // 下拉占位符
             dropdownPlaceholder() {
                 return this.$utils.isNotEmpty(this.placeholder) ? this.fieldOptions['include_blank_value'] || this.placeholder : ''
             },
-            /**
-             * 选择类型占位符
-             */
+            // 选择类型占位符
             selectPlaceholder() {
                 return this.$utils.isNotEmpty(this.placeholder) ? this.placeholder : '请选择'
             },
-            /**
-             * 可清空
-             */
+            // 可清空
             clearable() {
                 return this.$utils.toBoolean(this.fieldOptions['clearable'], true)
             },
-            /**
-             * 编辑器按钮
-             */
+            // 下拉是否允许创建,仅数据来源为静态数据时生效
+            allowCreate() {
+                return this.fieldOptions['allowCreate'] && this.fieldOptions['datasource'] === 'custom'
+            },
+            // 编辑器按钮
             ueditorConfig() {
                 const config = {
                     initialContent: this.placeholder,
@@ -862,18 +835,13 @@
                 }
                 return config
             },
-            /**
-             * 最大文件上传
-             */
+            // 最大文件上传
             maxFileSize() {
                 return this.$utils.isNotEmpty(this.fieldOptions.max_file_size) ? this.fieldOptions.max_file_size * 1024 * 1024 : null
             },
-            /**
-             * 最大文件个数
-             */
+            // 最大文件个数
             fileQuantity() {
-                if (this.$utils.isNotEmpty(this.fieldOptions.max_file_quantity) && (this.fieldOptions.max_file_quantity !== '-1' || this.fieldOptions.max_file_quantity !== -1)
-                ) {
+                if (this.$utils.isNotEmpty(this.fieldOptions.max_file_quantity) && (this.fieldOptions.max_file_quantity !== '-1' || this.fieldOptions.max_file_quantity !== -1)) {
                     return parseInt(this.fieldOptions.max_file_quantity, 10)
                 } else {
                     return null
@@ -904,7 +872,7 @@
                 }
                 const x = FILE_TYPES[mediaType]
                 if (x) {
-                    return x.map((v) => {
+                    return x.map(v => {
                         return '.' + v
                     })
                 } else {
@@ -914,21 +882,15 @@
             bindId() {
                 return this.fieldOptions['bind_id'] || ''
             },
-            /**
-             * 是否多选[字符串]
-             */
+            // 是否多选[字符串]
             multipleString() {
                 return this.$utils.toBoolean(this.fieldOptions['multiple'] === 'Y', true)
             },
-            /**
-             * 是否多选
-             */
+            // 是否多选
             multiple() {
                 return this.$utils.toBoolean(this.fieldOptions['multiple'], true)
             },
-            /**
-             * 是否多选
-             */
+            // 是否多选
             multipleSelect() {
                 return this.$utils.toBoolean(this.fieldOptions['multiple'], false)
             },
@@ -1020,7 +982,7 @@
             }
         },
         methods: {
-            /* 日期格式调整*/
+            // 日期格式调整
             selectTime(val) {
                 let date = new Date(new Date())
                 let year = date.getFullYear()
@@ -1037,7 +999,7 @@
                     this.dataModel = val + '-01-01'
                 }
             },
-            /* 获取当前时间*/
+            // 获取当前时间
             trans(val) {
                 return val < 10 ? '0' + val : val
             },
@@ -1057,10 +1019,10 @@
                     return
                 }
                 const template = this.dataTemplate.templates[0]
-                queryDataTable(this.getValuesourceParams(template, this.dataTemplate)).then((resp) => {
+                queryDataTable(this.getValuesourceParams(template, this.dataTemplate)).then(resp => {
                     const data = resp.data || {}
                     const dataResult = data.dataResult || []
-                    const options = dataResult.map((item) => {
+                    const options = dataResult.map(item => {
                         return {
                             val: item[this.valueKey],
                             label: item[this.labelKey]
@@ -1086,7 +1048,9 @@
                 const fieldObj = field ? field.split('.') : [] // 改变的字段
                 const selectorData = JSON.parse(JSON.stringify(data))
                 const targetValues = []
-                selectorData.forEach((s) => {targetValues.push(s[bind])})
+                selectorData.forEach(s => {
+                    targetValues.push(s[bind])
+                })
                 const targetString = targetValues.join(',')
                 if (this.$utils.isNotEmpty(fieldObj)) {
                     const fieldName = fieldObj.length > 1 ? fieldObj[1] : fieldObj[0]
@@ -1095,9 +1059,7 @@
                     }
                 }
             },
-            /**
-             * 联动数据
-             */
+            // 联动数据
             handleLinkageData(value, data) {
                 if (this.multipleString) {
                     return
@@ -1118,9 +1080,7 @@
                     }
                 }
             },
-            /**
-             *  联动属性
-             */
+            // 联动属性
             handleLinkageAttr(value, data) {
                 if (this.multipleString) {
                     return
@@ -1141,9 +1101,7 @@
                     }
                 }
             },
-            /**
-             * 选择器绑定id
-             */
+            // 选择器绑定id
             selectorBindCallback(value) {
                 const bindId = this.bindId
                 if (this.$utils.isEmpty(bindId)) {
@@ -1152,13 +1110,11 @@
                 }
                 this.changeFormData(bindId, value || '')
             },
-            /**
-             * 更新字段值(主表或其他子表)
-             */
+            // 更新字段值(主表或其他子表)
             changeFormData(name, value) {
                 this.$emit('change-data', name, value)
             },
-            /* 请求记忆数据库 */
+            // 请求记忆数据库
             reqPhrase(orderId, field) {
                 if (!this.watchKey || this.inputKey != field.name + field.field_text) {
                     this.watchKey = true
@@ -1170,11 +1126,11 @@
                             attrName: this.inputKey,
                             orderId: orderId
                         })
-                    }).then((response) => {
+                    }).then(response => {
                         if (response.state === 200) {
                             this.selectModel = response.variables.page
                         }
-                    }).catch((error) => {
+                    }).catch(error => {
                         this.$message.error('系统忙、或数据错误,请稍后再试')
                     })
                 }
@@ -1200,7 +1156,7 @@
                         url: BPMN_URL() + '/sys/SysDataContext/deleteDataContext',
                         method: 'post',
                         data: JSON.stringify({ uuId: id })
-                    }).then((response) => {
+                    }).then(response => {
                         this.menuHide = true
                         if (response.state === 200) {
                             this.$message({
@@ -1213,7 +1169,7 @@
                                 }
                             })
                         }
-                    }).catch((error) => {
+                    }).catch(error => {
                         this.$message.error('系统忙、或数据错误,请稍后再试')
                     })
                 }).catch(() => {})
@@ -1228,7 +1184,8 @@
             },
             //回调进行再次点击开关
             proceedCont() {
-                this.watchKey = false //防止恶意查询 。 为空表示可以点击了
+                //防止恶意查询 。 为空表示可以点击了
+                this.watchKey = false
             }
         }
     }
@@ -1260,7 +1217,6 @@
         box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 0px 0 rgba(0, 0, 0, 0.1);
         padding-left: 5px;
         min-height: 32px;
-        min-line-height: 32px;
     }
     .ibps-field-text-img {
         color: #000000;
@@ -1274,7 +1230,6 @@
         padding-left: 15px;
         min-height: 32px;
         margin-top: 5px;
-        min-line-height: 32px;
         font-size: 20px;
     }
 </style>

BIN
src/layout/header-aside/components/header-architecture/assets/systemArchitecture.png


+ 31 - 0
src/layout/header-aside/components/header-architecture/index.vue

@@ -0,0 +1,31 @@
+<template>
+  <div class="ibps-layout-header-user">
+    <el-button type="text" @click="open" style="color:#000">系统架构图</el-button>
+  </div>
+</template>
+
+<script>
+import imgSrc from '../header-architecture/assets/systemArchitecture.png'
+export default {
+ 
+  data() {
+    
+  },
+
+  methods: {
+    open() {
+      this.$alert('<img src="'+imgSrc+'" alt="" srcset="" style = "width:100%">', '系统架构图', {
+        dangerouslyUseHTMLString: true,
+        center: true,
+        showConfirmButton: false,
+        customClass: 'headerArchitectureMessageCss'
+      });
+    }
+  }
+}
+</script>
+<style>
+.headerArchitectureMessageCss{
+  width: 88%;
+}
+</style>

+ 5 - 0
src/layout/header-aside/layout.vue

@@ -96,6 +96,8 @@
 
                     <span style="font-size: 12px; cursor: pointer;" @click="goToMain()">首页</span>
                     <span style="margin: 0 10px;">|</span>
+                    <ibps-header-architecture />
+                    <span style="margin: 0 10px;">|</span>
                     <ibps-header-message />
                     <!-- 消息中心 -->
                     <span style="margin: 0 10px;">|</span>
@@ -179,6 +181,8 @@
     import IbpsHeaderSearch from './components/header-search'
     import FloatBall from './components/components/float-ball'
     import IbpsHeaderFullscreen from './components/header-fullscreen'
+    import IbpsHeaderArchitecture from './components/header-architecture'
+
     // import IbpsHeaderLocking from './components/header-locking'
     // import IbpsHeaderLanguage from './components/header-language'
     // import IbpsHeaderSize from './components/header-size'
@@ -210,6 +214,7 @@
             FloatBall,
             panle,
             IbpsHeaderFullscreen,
+            IbpsHeaderArchitecture,
             // IbpsHeaderLocking,
             // IbpsHeaderLanguage,
             // IbpsHeaderSize,

+ 62 - 112
src/views/platform/bpmn/bpmInstHis/listType/CMAOjiancedangan.vue

@@ -112,6 +112,28 @@
                 </div>
               </el-popover>
             </div>
+            <div>
+              <el-popover placement="left" width="200" trigger="click">
+                <div
+                  class="div_test item"
+                  style="color: #85ce61"
+                  slot="reference"
+                  @click="getjianceFile(scope.row)"
+                >
+                  <i class="el-icon-s-order"></i> 检测附件
+                </div>
+                <div class="three-item">
+                  <div
+                    style="color: #85ce61; cursor: pointer"
+                    v-for="it in jianceFileList"
+                    :key="it.id_"
+                    @click="jianceFile(it)"
+                  >
+                  {{ it.fileName }}.{{ it.ext }}
+                  </div>
+                </div>
+              </el-popover>
+            </div>
             <div
               class="item"
               style="color: #85ce61"
@@ -204,13 +226,22 @@
       >
       </el-pagination>
     </div>
+    <image-viewer
+            v-if="fileType === 'image'"
+            :z-index="zIndex"
+            :url-list="[fileUrl]"
+            :on-close="() => fileType = ''"
+        />
   </div>
 </template>
 
 <script>
 import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
 import GetReport from "../corresponding/getReport.js";
-import { SYSTEM_URL, BASE_API } from '@/api/baseUrl'
+import { SYSTEM_URL, BASE_API } from '@/api/baseUrl';
+import PopupManager from '@/utils/popup';
+import { previewFile } from '@/api/platform/file/attachment'
+const imageType = ['jpg', 'jpeg', 'bmp', 'png', 'gif']
 export default {
   mixins: [GetReport],
   data() {
@@ -240,13 +271,18 @@ export default {
       wTBH:[],
       tongyonglujin: '',// 检测项目通用路径
       srcUrl: '',
+      fileUrl: '',
+      fileType: '',
+      zIndex: 2000,
       fileList: [],
       fileType: '',
-      fileOption: {
-        user: {}
-      }
+      fileOption: {user: {}},
+      jianceFileList:[],
     };
   },
+  components: {
+    ImageViewer: () => import('@/components/ibps-file-viewer/image')
+  },
   filters: {
     returnHetong(value, arr) {
       for (var i = 0; i < arr.length; i++) {
@@ -392,114 +428,6 @@ export default {
             }
           })
         });
-      // if (itemName.includes("pH检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-103-R01 A1 pH检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("渗透压摩尔浓度检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-105-R01 A2 渗透压摩尔浓度检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("最低装量")) {
-      //   this.alertReport("42明鉴/张/最低装载量.rpx", shujuid);
-      // } else if (itemName.includes("无菌检测(薄膜过滤法)")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-102-R01 A2 无菌检测薄膜过滤法记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("无菌检测(全自动微生物培养)")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/无菌检测(全自动微生物培养).rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("内毒素检测(凝胶法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-117-R01 A1 细菌内毒素(凝胶法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("动态显色法")) {
-      //   this.alertReport(
-      //     "42明鉴/张/动态显色法检测内毒素记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("手动细胞计数")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-106-R01 A1 细胞计数检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("手动细胞活率")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-107-R01 A1 细胞活率检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(台盼蓝染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-118-R01  A0细胞计数和细胞活率(台盼蓝仪器法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(双荧光染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-119-R01  A0细胞计数和细胞活率(双荧光染色法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("牛血清白蛋白残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-111-R01 A1 牛血清白蛋白残留量检测.rpx",
-      //     '0c5c64b2083f43daa73d47bc1928d3ee'
-      //   );
-      // } else if (itemName.includes("青霉素残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/青霉素残留量检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(培养法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-104-R01 A1 支原体检测培养法记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(荧光PCR法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-113-R01 A1支原体检测(荧光PCR法) 副本.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测3项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测3项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测5项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测5项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测8项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测8项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("CIK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-123-R01 A0 CIK细胞表面标志物检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("NK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/恰/MJT-SJ-124-R01  A0 NK细胞表面标志物检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("淋巴细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-125-R01 A0 淋巴细胞表面标志物检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(化学发光法)记录表")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-114-R01 A1 支原体检测(化学发光法)记录表.rpx",
-      //     shujuid
-      //   );
-      // }
     },
     selectSplit() {
       // pin凑sql
@@ -531,6 +459,28 @@ export default {
         return "where";
       }
     },
+  //检测附件
+    getjianceFile(row){
+      let this_ =this;
+      this.jianceFileList = []
+      // const { bao_gao_pdf_, suo_you_yuan_shi_ } = row.suo_you_yuan_shi_
+      let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${row.jian_ce_yuan_shi_}')`
+        curdPost('sql', sql).then(res => {
+           this_.jianceFileList = res.variables && res.variables.data;
+        })
+     
+    },
+    jianceFile(file){
+      if (imageType.includes(file.ext)) {
+        this.zIndex = PopupManager.getZIndex()
+        this.fileUrl = previewFile(file.id)
+        this.fileType = 'image'
+      } else {
+         this.getOption(file)
+         this.openWindow()
+         this.fileType = ''
+      }
+    },
     search() {
       let moreSql = this.selectSplit();
       var sql =

+ 64 - 121
src/views/platform/bpmn/bpmInstHis/listType/CMAjiancedangan.vue

@@ -72,21 +72,14 @@
             <div
               class="item"
               style="color: #85ce61"
-              @click="
-                alertReport(
-                  reports.jianceshenqingdan,
-                  scope.row.jian_ce_shen_qing
-                )
-              "
+              @click="alertReport(reports.jianceshenqingdan,scope.row.jian_ce_shen_qing)"
             >
               <i class="el-icon-s-order"></i> 检测委托单
             </div>
             <div
               class="item"
               style="color: #85ce61"
-              @click="
-                alertReport(reports.hetongpingshen, scope.row.jian_ce_shen_qing)
-              "
+              @click="alertReport(reports.hetongpingshen, scope.row.jian_ce_shen_qing)"
             >
               <i class="el-icon-s-order"></i> 合同评审
             </div>
@@ -112,6 +105,28 @@
                 </div>
               </el-popover>
             </div>
+            <div>
+              <el-popover placement="left" width="200" trigger="click">
+                <div
+                  class="div_test item"
+                  style="color: #85ce61"
+                  slot="reference"
+                  @click="getjianceFile(scope.row)"
+                >
+                  <i class="el-icon-s-order"></i> 检测附件
+                </div>
+                <div class="three-item">
+                  <div
+                    style="color: #85ce61; cursor: pointer"
+                    v-for="it in jianceFileList"
+                    :key="it.id_"
+                    @click="jianceFile(it)"
+                  >
+                  {{ it.fileName }}.{{ it.ext }}
+                  </div>
+                </div>
+              </el-popover>
+            </div>
             <div
               class="item"
               style="color: #85ce61"
@@ -204,13 +219,22 @@
       >
       </el-pagination>
     </div>
+    <image-viewer
+            v-if="fileType === 'image'"
+            :z-index="zIndex"
+            :url-list="[fileUrl]"
+            :on-close="() => fileType = ''"
+        />
   </div>
 </template>
 
 <script>
 import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
 import GetReport from "../corresponding/getReport.js";
-import { SYSTEM_URL, BASE_API } from '@/api/baseUrl'
+import { SYSTEM_URL, BASE_API } from '@/api/baseUrl';
+import PopupManager from '@/utils/popup';
+import { previewFile } from '@/api/platform/file/attachment'
+const imageType = ['jpg', 'jpeg', 'bmp', 'png', 'gif']
 export default {
   mixins: [GetReport],
   data() {
@@ -240,13 +264,18 @@ export default {
       wTBH:[],
       tongyonglujin: '',// 检测项目通用路径
       srcUrl: '',
+      fileUrl: '',
+      fileType: '',
+      zIndex: 2000,
       fileList: [],
       fileType: '',
-      fileOption: {
-        user: {}
-      }
+      fileOption: {user: {}},
+      jianceFileList:[],
     };
   },
+  components: {
+    ImageViewer: () => import('@/components/ibps-file-viewer/image')
+  },
   filters: {
     returnHetong(value, arr) {
       for (var i = 0; i < arr.length; i++) {
@@ -392,114 +421,6 @@ export default {
             }
           })
         });
-      // if (itemName.includes("pH检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-103-R01 A1 pH检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("渗透压摩尔浓度检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-105-R01 A2 渗透压摩尔浓度检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("最低装量")) {
-      //   this.alertReport("42明鉴/张/最低装载量.rpx", shujuid);
-      // } else if (itemName.includes("无菌检测(薄膜过滤法)")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-102-R01 A2 无菌检测薄膜过滤法记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("无菌检测(全自动微生物培养)")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/无菌检测(全自动微生物培养).rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("内毒素检测(凝胶法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-117-R01 A1 细菌内毒素(凝胶法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("动态显色法")) {
-      //   this.alertReport(
-      //     "42明鉴/张/动态显色法检测内毒素记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("手动细胞计数")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-106-R01 A1 细胞计数检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("手动细胞活率")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-107-R01 A1 细胞活率检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(台盼蓝染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-118-R01  A0细胞计数和细胞活率(台盼蓝仪器法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(双荧光染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-119-R01  A0细胞计数和细胞活率(双荧光染色法)检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("牛血清白蛋白残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-111-R01 A1 牛血清白蛋白残留量检测.rpx",
-      //     '0c5c64b2083f43daa73d47bc1928d3ee'
-      //   );
-      // } else if (itemName.includes("青霉素残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/青霉素残留量检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(培养法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-104-R01 A1 支原体检测培养法记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(荧光PCR法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-113-R01 A1支原体检测(荧光PCR法) 副本.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测3项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测3项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测5项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测5项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测8项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测8项.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("CIK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-123-R01 A0 CIK细胞表面标志物检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("NK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/恰/MJT-SJ-124-R01  A0 NK细胞表面标志物检测记录.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("淋巴细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-125-R01 A0 淋巴细胞表面标志物检测记录表.rpx",
-      //     shujuid
-      //   );
-      // } else if (itemName.includes("支原体检测(化学发光法)记录表")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-114-R01 A1 支原体检测(化学发光法)记录表.rpx",
-      //     shujuid
-      //   );
-      // }
     },
     selectSplit() {
       // pin凑sql
@@ -531,6 +452,28 @@ export default {
         return "where";
       }
     },
+    //检测附件
+    getjianceFile(row){
+      let this_ =this;
+      this.jianceFileList = []
+      // const { bao_gao_pdf_, suo_you_yuan_shi_ } = row.suo_you_yuan_shi_
+      let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${row.jian_ce_yuan_shi_}')`
+        curdPost('sql', sql).then(res => {
+           this_.jianceFileList = res.variables && res.variables.data;
+        })
+     
+    },
+    jianceFile(file){
+      if (imageType.includes(file.ext)) {
+        this.zIndex = PopupManager.getZIndex()
+        this.fileUrl = previewFile(file.id)
+        this.fileType = 'image'
+      } else {
+         this.getOption(file)
+         this.openWindow()
+         this.fileType = ''
+      }
+    },
     search() {
       let moreSql = this.selectSplit();
       var sql =

+ 64 - 122
src/views/platform/bpmn/bpmInstHis/listType/CNASjiancedangan.vue

@@ -111,6 +111,28 @@
                 </div>
               </el-popover>
             </div>
+            <div>
+              <el-popover placement="left" width="200" trigger="click">
+                <div
+                  class="div_test item"
+                  style="color: #85ce61"
+                  slot="reference"
+                  @click="getjianceFile(scope.row)"
+                >
+                  <i class="el-icon-s-order"></i> 检测附件
+                </div>
+                <div class="three-item">
+                  <div
+                    style="color: #85ce61; cursor: pointer"
+                    v-for="it in jianceFileList"
+                    :key="it.id_"
+                    @click="jianceFile(it)"
+                  >
+                  {{ it.fileName }}.{{ it.ext }}
+                  </div>
+                </div>
+              </el-popover>
+            </div>
             <div
               class="item"
               style="color: #85ce61"
@@ -203,13 +225,22 @@
       >
       </el-pagination>
     </div>
+    <image-viewer
+            v-if="fileType === 'image'"
+            :z-index="zIndex"
+            :url-list="[fileUrl]"
+            :on-close="() => fileType = ''"
+        />
   </div>
 </template>
 
 <script>
 import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
 import GetReport from "../corresponding/getReport.js";
-import { SYSTEM_URL, BASE_API } from '@/api/baseUrl'
+import { SYSTEM_URL, BASE_API } from '@/api/baseUrl';
+import PopupManager from '@/utils/popup';
+import { previewFile } from '@/api/platform/file/attachment'
+const imageType = ['jpg', 'jpeg', 'bmp', 'png', 'gif']
 export default {
   mixins: [GetReport],
   data() {
@@ -239,13 +270,18 @@ export default {
       wTBH: [],
       tongyonglujin: '',// 检测项目通用路径
       srcUrl: '',
+      fileUrl: '',
+      fileType: '',
+      zIndex: 2000,
       fileList: [],
       fileType: '',
-      fileOption: {
-        user: {}
-      }
+      fileOption: {user: {}},
+      jianceFileList:[],
     };
   },
+  components: {
+    ImageViewer: () => import('@/components/ibps-file-viewer/image')
+  },
   filters: {
     returnHetong(value, arr) {
       for (var i = 0; i < arr.length; i++) {
@@ -338,7 +374,6 @@ export default {
       var sql =`select jian_ce_xiang_mu2,jian_ce_xiang_si_ ,jian_ce_xiang_me_ ,jian_ce_xiang_ms_  FROM t_mjypb  WHERE  wai_jian_= (SELECT jian_ce_shen_qing  FROM t_mjjcbg  WHERE id_= '${info.id_}') AND yang_pin_bian_hao = '${info.yang_pin_bian_hao}'`;
       curdPost("sql", sql).then((res) => {
         itemId = res.variables.data;
-        console.log(itemId,"2323")
         if(itemId.length <=0 ||itemId ==null){
           return
         }
@@ -392,116 +427,6 @@ export default {
             }
           })
         });
-
-
-      // if (itemName.includes("pH检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-103-R01 A1 pH检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("渗透压摩尔浓度检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-105-R01 A2 渗透压摩尔浓度检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("最低装量")) {
-      //   this.alertReport("42明鉴/张/最低装载量.rpx", this.runqianId);
-      // } else if (itemName.includes("无菌检测(薄膜过滤法)")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-102-R01 A2 无菌检测薄膜过滤法记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("无菌检测(全自动微生物培养)")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/无菌检测(全自动微生物培养).rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("内毒素检测(凝胶法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-117-R01 A1 细菌内毒素(凝胶法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("内毒素检测(动态显色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/张/动态显色法检测内毒素记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("手动细胞计数")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-106-R01 A1 细胞计数检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("手动细胞活率")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-107-R01 A1 细胞活率检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(台盼蓝染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-118-R01  A0细胞计数和细胞活率(台盼蓝仪器法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(双荧光染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-119-R01  A0细胞计数和细胞活率(双荧光染色法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("牛血清白蛋白残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-111-R01 A1 牛血清白蛋白残留量检测.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("青霉素残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/青霉素残留量检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(培养法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-104-R01 A1 支原体检测培养法记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(荧光PCR法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-113-R01 A1支原体检测(荧光PCR法) 副本.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测3项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测3项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测5项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测5项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测8项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测8项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("CIK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-123-R01 A0 CIK细胞表面标志物检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("NK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/恰/MJT-SJ-124-R01  A0 NK细胞表面标志物检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("淋巴细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-125-R01 A0 淋巴细胞表面标志物检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(化学发光法)记录表")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-114-R01 A1 支原体检测(化学发光法)记录表.rpx",
-      //     this.runqianId
-      //   );
-      // }
     },
     isYubaogao(value, row) {},
     // pin凑sql
@@ -534,6 +459,28 @@ export default {
         return "WHERE";
       }
     },
+    //检测附件
+    getjianceFile(row){
+      let this_ =this;
+      this.jianceFileList = []
+      // const { bao_gao_pdf_, suo_you_yuan_shi_ } = row.suo_you_yuan_shi_
+      let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${row.jian_ce_yuan_shi_}')`
+        curdPost('sql', sql).then(res => {
+           this_.jianceFileList = res.variables && res.variables.data;
+        })
+     
+    },
+    jianceFile(file){
+      if (imageType.includes(file.ext)) {
+        this.zIndex = PopupManager.getZIndex()
+        this.fileUrl = previewFile(file.id)
+        this.fileType = 'image'
+      } else {
+         this.getOption(file)
+         this.openWindow()
+         this.fileType = ''
+      }
+    },
     search() {
       let moreSql = this.selectSplit();
       var sql =
@@ -544,16 +491,11 @@ export default {
     },
     handleSizeChange(value) {
       this.currentPage4 = 1;
-      let sql =
-        "select * from t_mjjcbg WHERE shi_fou_yu_bao_ga='否' and (lei_bie_qu_fen_yu ='cnas'OR lei_bie_qu_fen_yu ='CNAS')  and (zhuang_tai_ ='报告待发放' or  zhuang_tai_ = '完成') ORDER BY create_time_ DESC limit 0," +
-        value;
+      let sql ="select * from t_mjjcbg WHERE shi_fou_yu_bao_ga='否' and (lei_bie_qu_fen_yu ='cnas'OR lei_bie_qu_fen_yu ='CNAS')  and (zhuang_tai_ ='报告待发放' or  zhuang_tai_ = '完成') ORDER BY create_time_ DESC limit 0," +value;
       this.loadData(sql);
     },
     handleCurrentChange(value) {
-      let sql =
-        "select * from t_mjjcbg WHERE shi_fou_yu_bao_ga='否' and (lei_bie_qu_fen_yu ='cnas'OR lei_bie_qu_fen_yu ='CNAS')  and (zhuang_tai_ ='报告待发放' or  zhuang_tai_ = '完成') ORDER BY create_time_ DESC limit " +
-        value +
-        ", 20";
+      let sql ="select * from t_mjjcbg WHERE shi_fou_yu_bao_ga='否' and (lei_bie_qu_fen_yu ='cnas'OR lei_bie_qu_fen_yu ='CNAS')  and (zhuang_tai_ ='报告待发放' or  zhuang_tai_ = '完成') ORDER BY create_time_ DESC limit " +value +", 20";
       this.loadData(sql);
     },
     // 获取附件信息

+ 61 - 111
src/views/platform/bpmn/bpmInstHis/listType/feijiancedangan.vue

@@ -113,6 +113,28 @@
                 </div>
               </el-popover>
             </div>
+            <div>
+              <el-popover placement="left" width="200" trigger="click">
+                <div
+                  class="div_test item"
+                  style="color: #85ce61"
+                  slot="reference"
+                  @click="getjianceFile(scope.row)"
+                >
+                  <i class="el-icon-s-order"></i> 检测附件
+                </div>
+                <div class="three-item">
+                  <div
+                    style="color: #85ce61; cursor: pointer"
+                    v-for="it in jianceFileList"
+                    :key="it.id_"
+                    @click="jianceFile(it)"
+                  >
+                  {{ it.fileName }}.{{ it.ext }}
+                  </div>
+                </div>
+              </el-popover>
+            </div>
             <div
               class="item"
               style="color: #85ce61"
@@ -205,6 +227,12 @@
       >
       </el-pagination>
     </div>
+    <image-viewer
+            v-if="fileType === 'image'"
+            :z-index="zIndex"
+            :url-list="[fileUrl]"
+            :on-close="() => fileType = ''"
+        />
   </div>
 </template>
 
@@ -212,6 +240,9 @@
 import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
 import GetReport from "../corresponding/getReport.js";
 import { SYSTEM_URL, BASE_API } from '@/api/baseUrl'
+import PopupManager from '@/utils/popup';
+import { previewFile } from '@/api/platform/file/attachment'
+const imageType = ['jpg', 'jpeg', 'bmp', 'png', 'gif']
 export default {
   data() {
     return {
@@ -240,14 +271,19 @@ export default {
       wTBH: [],
       tongyonglujin: '',// 检测项目通用路径
       srcUrl: '',
+      fileUrl: '',
+      fileType: '',
+      zIndex: 2000,
       fileList: [],
       fileType: '',
-      fileOption: {
-        user: {}
-      }
+      fileOption: {user: {}},
+      jianceFileList:[],
     };
   },
   mixins: [GetReport],
+  components: {
+    ImageViewer: () => import('@/components/ibps-file-viewer/image')
+  },
   filters: {
     returnHetong(value, arr) {
       for (var i = 0; i < arr.length; i++) {
@@ -382,114 +418,6 @@ export default {
             }
           })
         });
-      // if (itemName.includes("pH检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-103-R01 A1 pH检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("渗透压摩尔浓度检测")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-105-R01 A2 渗透压摩尔浓度检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("最低装量")) {
-      //   this.alertReport("42明鉴/张/最低装载量.rpx", this.runqianId);
-      // } else if (itemName.includes("无菌检测(薄膜过滤法)")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-102-R01 A2 无菌检测薄膜过滤法记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("无菌检测(全自动微生物培养)")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/无菌检测(全自动微生物培养).rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("内毒素检测(凝胶法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-117-R01 A1 细菌内毒素(凝胶法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("内毒素检测(动态显色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/张/动态显色法检测内毒素记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("手动细胞计数")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-106-R01 A1 细胞计数检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("手动细胞活率")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-107-R01 A1 细胞活率检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(台盼蓝染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-118-R01  A0细胞计数和细胞活率(台盼蓝仪器法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("自动细胞计数和活率(双荧光染色法)")) {
-      //   this.alertReport(
-      //     "42明鉴/郑/MJT-SJ-119-R01  A0细胞计数和细胞活率(双荧光染色法)检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("牛血清白蛋白残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-111-R01 A1 牛血清白蛋白残留量检测.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("青霉素残留检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/青霉素残留量检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(培养法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-104-R01 A1 支原体检测培养法记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(荧光PCR法)")) {
-      //   this.alertReport(
-      //     "42明鉴/卢/MJT-SJ-113-R01 A1支原体检测(荧光PCR法) 副本.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测3项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测3项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测5项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测5项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("间充质干细胞表型检测8项")) {
-      //   this.alertReport(
-      //     "42明鉴/柯/间充质干细胞表型检测8项.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("CIK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-123-R01 A0 CIK细胞表面标志物检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("NK细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/恰/MJT-SJ-124-R01  A0 NK细胞表面标志物检测记录.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("淋巴细胞表型检测")) {
-      //   this.alertReport(
-      //     "42明鉴/张/MJT-SJ-125-R01 A0 淋巴细胞表面标志物检测记录表.rpx",
-      //     this.runqianId
-      //   );
-      // } else if (itemName.includes("支原体检测(化学发光法)记录表")) {
-      //   this.alertReport(
-      //     "42明鉴/林/MJT-SJ-114-R01 A1 支原体检测(化学发光法)记录表.rpx",
-      //     this.runqianId
-      //   );
-      // }
     },
     YubaogaoItem(info) {
       let itemId;
@@ -553,6 +481,28 @@ export default {
         return "WHERE";
       }
     },
+    //检测附件
+    getjianceFile(row){
+      let this_ =this;
+      this.jianceFileList = []
+      // const { bao_gao_pdf_, suo_you_yuan_shi_ } = row.suo_you_yuan_shi_
+      let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${row.jian_ce_yuan_shi_}')`
+        curdPost('sql', sql).then(res => {
+           this_.jianceFileList = res.variables && res.variables.data;
+        })
+     
+    },
+    jianceFile(file){
+      if (imageType.includes(file.ext)) {
+        this.zIndex = PopupManager.getZIndex()
+        this.fileUrl = previewFile(file.id)
+        this.fileType = 'image'
+      } else {
+         this.getOption(file)
+         this.openWindow()
+         this.fileType = ''
+      }
+    },
     search() {
       let moreSql = this.selectSplit();
       var sql =

+ 1 - 2
src/views/system/jbdScan/goods/lingliaodan.vue

@@ -277,8 +277,7 @@ export default {
               data["time2"] = time2;
               let s3 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee  as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT  PROC_INST_ID_  FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item.id_}' LIMIT 1) AND b.NODE_ID_ = 'Activity_0dbdxg7' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
               repostCurd("sql", s3).then((res) => {
-
-                if(res.variables.data >0){
+                if(res.variables.data.length >0){
                   name3 = res.variables.data[0].NAME_;
                   time3 = res.variables.data[0].CREATE_TIME_;                  
                 }

+ 97 - 67
src/views/system/jbdScan/goods/neishenzhuangtai.vue

@@ -1,14 +1,14 @@
 <template>
   <div class="bg">
     <el-dialog
-      width="60vw"
+      width="70vw"
       height="50vh"
       :modal-append-to-body="false"
       title="内审进度查询"
       :visible.sync="scanVisible"
     >
       <!-- 表单是否显示 -->
-      <div style="height: 75vh; width: 100%">
+      <div style="height: 75vh; width: 98%">
         <div id="box">
           <div class="overall">
             <!-- 步骤条盒子 -->
@@ -19,10 +19,7 @@
                 <div class="line">
                   <span
                     class="plan"
-                    :style="`width:${
-                      activeIndex * (100 / (stepList.length - 1)) -
-                      100 / (stepList.length - 1) / 2
-                    }%`"
+                    :style="`width:${activeIndex * (100 / (stepList.length - 1)) -100 / (stepList.length - 1) / 2}%`"
                   ></span>
                 </div>
                 <!-- 每步部分底部文字描述 -->
@@ -30,25 +27,21 @@
                   class="step"
                   v-for="(i, index) in stepList"
                   :key="index"
-                  :class="
-                    activeIndex == i.stepIndex || i.stepIndex <= activeIndex
-                      ? 'step-active'
-                      : ''
-                  "
+                  :class="activeIndex == i.stepIndex || i.stepIndex <= activeIndex? 'step-active': ''"
                 >
                   <span class="step-num">
                     <i class="el-icon-caret-right icon" v-if="index != 0"></i>
                     <p cla>{{ i.title }}</p>
-                    <!-- <span class="num">{{ i.stepIndex }}</span> -->
                   </span>
-                  <p class="title"></p>
+                  <p class="post">{{i.post}}</p>
                 </span>
+                <!-- <span></span> -->
               </div>
               <!-- 步骤条对应内容 -->
               <div class="Article-content"></div>
             </div>
           </div>
-          <div style="width: 90%; margin: 0 auto">
+          <div style="width: 90%; margin: 50px auto 0px">
             <div class="main">
               <div class="wheel-title">内审核查完成率</div>
               <div id="main"></div>
@@ -58,7 +51,7 @@
           <div v-if="CNASTableData.length > 0">
             <div class="cnas">
               <div style="width: 90%; margin: 0 auto; line-height: 35px">
-                内审不符合项(CNAS)
+                内审不符合项汇总表(CNAS)
               </div>
               <el-table :data="CNASTableData" border style="width: 90%; margin: 0 auto">
                 <el-table-column
@@ -120,7 +113,7 @@
           <div v-if="CMAtable.length > 0">
             <div class="cma">
               <div style="width: 90%; margin: 0 auto; line-height: 35px">
-                内审不符合项(CMA)
+                内审不符合项汇总表(CMA)
               </div>
               <el-table
                 :data="CMAtable"
@@ -221,40 +214,49 @@ export default {
       //步骤条步数
       stepList: [
         {
-          stepIndex: 5,
+          stepIndex: 11,
+          title: "内审计划编制",
+          post:'质量负责人'
+        },
+        {
+          stepIndex: 22,
           title: "内审实施计划编制",
+          post:'内审组长'
         },
         {
-          stepIndex: 15,
+          stepIndex: 33,
           title: "检查表编制",
+          post:'内审员'
         },
         {
-          stepIndex: 30,
+          stepIndex: 44,
           title: "首次会议",
+          post:'内审组长'
         },
         {
-          stepIndex: 45,
+          stepIndex: 55,
           title: "内部审核",
+          post:'内审员'
         },
         {
-          stepIndex: 60,
+          stepIndex: 66,
           title: "末次会议",
+          post:'内审组长'
         },
         {
-          stepIndex: 75,
+          stepIndex: 77,
           title: "不符合项整改",
+          post:'内审员/部门负责人'
         },
         {
-          stepIndex: 95,
+          stepIndex: 88,
           title: "内审报告",
+          post:'内审组长'
         },
-        // {
-        //   stepIndex: 8,
-        //   title: "不符合项跟踪",
-        // },
         {
           stepIndex: 100,
           title: "内审结束",
+          post:''
         },
       ],
       CNASTableData: [], //cnas
@@ -278,14 +280,29 @@ export default {
       }
     },
     partFilter: function (value, arr) {
-      for (let i = 0; i < arr.length; i++) {
-        console.log(arr[i])
-        if (arr[i].ID_ == value) {
-          return arr[i].NAME_;
-        }else{
-          return value
-        }
-      }
+      return value
+      // if(value.includes(",")){
+      //   let part = "";
+      //   let parts = []
+      //   parts = value.split(',');
+      //   for(let item of arr){
+      //     for(let j = 0; j < parts.length; j++) {
+      //       if(item.ID_ == parts[j]){
+      //         part = part +","+ item.NAME_;
+      //       }
+      //     }
+      //   }
+      //   return part.slice(1,part.length)
+      // }else{  
+      // for (let i = 0; i < arr.length; i++) {
+      //   console.log(arr[i])
+      //   if (arr[i].ID_ == value) {
+      //     return arr[i].NAME_;
+      //   }else{
+      //     return value
+      //   }
+      // }
+      // }
     },
   },
   watch: {
@@ -588,22 +605,24 @@ export default {
     },
     jieduan(value) {
       if (value.includes("1")) {
-        return 5;
+        return 11;
       } else if (value.includes("2")) {
-        return 15;
+        return 22;
       } else if (value.includes("3")) {
-        return 30;
+        return 33;
       } else if (value.includes("4")) {
-        return 45;
+        return 44;
       } else if (value.includes("5")) {
-        return 60;
+        return 55;
       } else if (value.includes("6")) {
-        return 75;
+        return 66;
       } else if (value.includes("7")) {
-        return 90;
+        return 77;
       } else if (value.includes("8")) {
+        return 88;
+      }else if (value.includes("8")) {
         return 100;
-      } else {
+      }else {
         return 0;
       }
     },
@@ -651,16 +670,27 @@ export default {
       let arrr = arr;
       let newarr = [];
       let obj = {};
+      let str =""
       let sql = "select ID_,NAME_ FROM  ibps_party_org";
       await repostCurd("sql", sql).then((res) => {
         let arr1 = res.variables.data;
         arr.forEach((item, index) => {
+          str =""
           arr1.forEach((it) => {
-            if (item.ze_ren_shi_ == it.ID_) {
+            debugger
+            if (item.ze_ren_shi_ == it.ID_ && !item.ze_ren_shi_.includes(",")) {
               arr[index].ze_ren_shi_ = it.NAME_;
             }
+            if(item.ze_ren_shi_.includes(",")&& item.ze_ren_shi_.includes(it.ID_)){
+              str += "," + it.NAME_
+            }
           });
+          if(str){
+            arr[index].ze_ren_shi_ = str.slice(1,str.length);
+          }
         });
+
+
       });
       let map = new Map();
       for (let item of arr) {
@@ -683,16 +713,15 @@ export default {
         this.loading = false;
       });
       type == "CMA" ? (this.cmaPieData = newarr) : (this.cnasPieData = newarr);
-      console.log(this.cnasPieData);
       callBlack();
     },
     getInit() {
       let data = this.obj[0];
       let jieduanvalue;
       if (data.shi_fou_guo_shen_ == "已编制" && data.jie_dian_ren_wu_ == "") {
-        jieduanvalue = "1";
-      } else if (data.shi_fou_guo_shen_ == "1" && data.jie_dian_ren_wu_ == "") {
         jieduanvalue = "2";
+      } else if (data.shi_fou_guo_shen_ == "1" && data.jie_dian_ren_wu_ == "") {
+        jieduanvalue = "3";
       } else {
         jieduanvalue = data.jie_dian_ren_wu_;
       }
@@ -704,13 +733,9 @@ export default {
       let this_ = this;
       this_.CNASTableData = [];
       this_.CMAtable = [];
-      let sql =
-        "select * FROM t_nsbfhxjlhzb WHERE wai_jian_ =(SELECT id_  FROM t_nshyjyb WHERE ji_hua_zong_wai_j ='" +
-        id +
-        "' ORDER BY create_time_ DESC LIMIT 1)";
+      let sql ="select * FROM t_nsbfhxjlhzb WHERE wai_jian_ =(SELECT id_  FROM t_nshyjyb WHERE ji_hua_zong_wai_j ='" +id +"' ORDER BY create_time_ DESC LIMIT 1)";
       await repostCurd("sql", sql).then((res) => {
         let data = res.variables.data;
-
         data.forEach((item) => {
           if (item.ping_shen_yi_ju_.includes("RB")) {
             this_.CMAtable.push(item);
@@ -720,16 +745,8 @@ export default {
         });
         this_.$nextTick(() => {
           if (this_.CNASTableData.length > 0) {
-            this_.getNoData(
-              this_.CNASTableData,
-              "CNAS",
-              this_.getLoadEchartsTwo
-            );
-            this_.getPieData(
-              this_.CNASTableData,
-              "CNAS",
-              this_.getLoadEchartsthree
-            );
+            this_.getNoData(this_.CNASTableData,"CNAS",this_.getLoadEchartsTwo);
+            this_.getPieData(this_.CNASTableData,"CNAS",this_.getLoadEchartsthree);
           }
           if (this_.CMAtable.length > 0) {
             this_.getNoData(this_.CMAtable, "CMA", this_.getLoadCmaEchartsX);
@@ -751,9 +768,10 @@ export default {
     margin: 0 auto;
     .wheel-title {
       position: absolute;
-
       top: 60px;
       left: -8px;
+      top: 86%;
+      left: calc(90% - 205px);
       // color: #000;
       // font-weight: bold;
     }
@@ -774,12 +792,14 @@ export default {
     height: 2px;
     position: relative;
     margin: 10px auto;
+    display: flex;
+    justify-content: space-between;
     // <!-- 步骤条背景进度条 -->
     .line {
       display: block;
       margin: 0 auto;
       position: absolute;
-      top: 24px;
+      top: 27px;
       left: 5%;
       background: #8ab4f3;
       width: 95%;
@@ -795,6 +815,7 @@ export default {
       }
     }
     .Article-steps {
+      width: 100%;
       display: flex;
       justify-content: space-between;
       .step {
@@ -802,12 +823,11 @@ export default {
           font-size: 17px;
           font-weight: bold;
           color: #808080;
-          margin-top: 5px;
         }
         .step-num {
           position: absolute;
-          width: 50px;
-          height: 50px;
+          width: 58px;
+          height: 58px;
           display: inline-block;
           line-height: 50px;
           background: #808080;
@@ -842,6 +862,16 @@ export default {
             display: inline-block;
           }
         }
+        .post{
+          text-align: center;
+          font-size: 12px;
+          margin-top: 5px;
+          position: absolute;
+          top: 60px;
+          color: #2d7df5;
+          width: 60px;
+          overflow: hidden;
+        }
       }
     }
 

+ 12 - 2
src/views/system/jbdScan/wuliao/bwlingliaodan.vue

@@ -239,6 +239,16 @@ export default {
       }
       return s;
     },
+    timestampToTime(times) {
+      let time = times[1]
+      let mdy = times[0]
+      mdy = mdy.split('/')
+      let month = parseInt(mdy[0]);
+      let day = parseInt(mdy[1]);
+      let year = parseInt(mdy[2])
+      return year + '-' + month + '-' + day 
+    },
+
     getLook(id) {
       let this_ = this;
       this.list = [];
@@ -266,11 +276,11 @@ export default {
               time2 = res.variables.data[0].CREATE_TIME_;
               data["name2"] = name2;
               data["time2"] = time2;
-              let s3 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee  as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT  PROC_INST_ID_  FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item.id_}' LIMIT 1) AND b.NODE_ID_ = 'Activity_1ydalp9' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
+              let s3 = `select NAME_ FROM  	ibps_party_employee WHERE ID_ =(SELECT USER_ID_ FROM  ibps_party_user_role WHERE ROLE_ID_ =(SELECT id_ FROM 	ibps_party_role WHERE NAME_ ='仓库管理员' LIMIT 1))`;
               repostCurd("sql", s3).then((res) => {
                 if(res.variables.data.length > 0){
                   name3 = res.variables.data[0].NAME_;
-                  time3 = res.variables.data[0].CREATE_TIME_;                  
+                  time3 = this_.timestampToTime(new Date().toLocaleString('en-US',{hour12: false}).split(" "))                   
                 }
                 data["name3"] = name3;
                 data["time3"] = time3;

+ 12 - 3
src/views/system/jbdScan/wuliao/lingliaodan.vue

@@ -247,6 +247,15 @@ export default {
       }
       return s;
     },
+    timestampToTime(times) {
+      let time = times[1]
+      let mdy = times[0]
+      mdy = mdy.split('/')
+      let month = parseInt(mdy[0]);
+      let day = parseInt(mdy[1]);
+      let year = parseInt(mdy[2])
+      return year + '-' + month + '-' + day 
+    },
     getLook(id) {
       let this_ = this;
       this.list = [];
@@ -275,12 +284,12 @@ export default {
               time2 = res.variables.data[0].CREATE_TIME_;
               data["name2"] = name2;
               data["time2"] = time2;
-              let s3 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee  as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT  PROC_INST_ID_  FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item.id_}' LIMIT 1) AND b.NODE_ID_ = 'Activity_0dbdxg7' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
+              let s3 = `select NAME_ FROM  	ibps_party_employee WHERE ID_ =(SELECT USER_ID_ FROM  ibps_party_user_role WHERE ROLE_ID_ =(SELECT id_ FROM 	ibps_party_role WHERE NAME_ ='仓库管理员' LIMIT 1))`;
               repostCurd("sql", s3).then((res) => {
 
-                if(res.variables.data >0){
+                if(res.variables.data.length >0){
                   name3 = res.variables.data[0].NAME_;
-                  time3 = res.variables.data[0].CREATE_TIME_;                  
+                  time3 = this_.timestampToTime(new Date().toLocaleString('en-US',{hour12: false}).split(" "))                   
                 }
 
                 data["name3"] = name3;