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

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

zhangjingyuan 3 лет назад
Родитель
Сommit
b2559f1ff0
29 измененных файлов с 1156 добавлено и 632 удалено
  1. 183 0
      src/business/platform/data/templaterender/components/labelPrint.vue
  2. 12 2
      src/business/platform/data/templaterender/templates/list.vue
  3. 9 24
      src/business/platform/file/uploader/index.vue
  4. 329 325
      src/business/platform/file/uploader/upload.vue
  5. 1 1
      src/setting.js
  6. 103 63
      src/views/crm/component/customerStatistics.vue
  7. 107 44
      src/views/crm/tongji.vue
  8. 3 3
      src/views/platform/org/employee/edit/index.vue
  9. 28 15
      src/views/scientificPayoffs/js/index.js
  10. 114 68
      src/views/statistics/index.vue
  11. 5 0
      src/views/statistics/item/s13shengWu.vue
  12. 5 1
      src/views/statistics/item/s1jianCe.vue
  13. 5 0
      src/views/statistics/item/s1zhiLiangMuBiao.vue
  14. 5 0
      src/views/statistics/item/s2manYiDu.vue
  15. 5 0
      src/views/statistics/item/s3tousu.vue
  16. 7 0
      src/views/statistics/properties/s13shengWuPro.vue
  17. 6 0
      src/views/statistics/properties/s1jianCePro.vue
  18. 6 0
      src/views/statistics/properties/s1zhiLiangMuBiaoPro.vue
  19. 6 0
      src/views/statistics/properties/s2manYiDuPro.vue
  20. 7 0
      src/views/statistics/properties/s3tousuPro.vue
  21. 110 12
      src/views/system/jbdHome/yangPinShuJu/EntrustNumber.vue
  22. 5 5
      src/views/system/jbdHome/yangPinShuJu/index.vue
  23. 1 1
      src/views/system/jbdHome/yangPinShuJu/sampleReceived.vue
  24. 1 1
      src/views/system/jbdHome/yangPinShuJu/waitingInspection.vue
  25. 22 15
      src/views/system/jbdScan/goods/deviceFailureTag.vue
  26. 13 11
      src/views/system/jbdScan/goods/deviceTag.vue
  27. 14 9
      src/views/system/jbdScan/goods/deviceVerificationTag.vue
  28. 22 16
      src/views/system/jbdScan/goods/manualConfirmation.vue
  29. 22 16
      src/views/system/jbdScan/goods/sampleConfirmation.vue

+ 183 - 0
src/business/platform/data/templaterender/components/labelPrint.vue

@@ -0,0 +1,183 @@
+<template>
+  <el-dialog :visible.sync="show"
+             :width="width"
+             custom-class="print-dialog"
+             append-to-body
+             :close-on-click-modal="false"
+             :title="title"
+             top="5vh"
+             @close="$emit('update:show', false)">
+    <vue-easy-print tableShow
+                    ref="easyPrint"
+                    :onePageRow="1">
+      <div class="content">
+        <div v-for="(item, index) in list"
+             :key="index"
+             class="box">
+          <p class="title">
+            <img src="../../../../../assets/images/login/logo.jpg"
+                 class="logoImg" />
+            深圳市罗湖医院集团
+          </p>
+          <template v-for="(o, i) in modelList">
+            <div v-if="item[o.value]"
+
+                 class="item"
+                 :style="`width: ${o.width};`">
+              <span class="name">{{ o.label }}:</span>
+              <span class="value">{{ item[o.value] }}</span>
+            </div>
+          </template>
+          <!-- <vue-barcode :value="item.bianHao"
+                       :width="3"
+                       :height="40"
+                       :fontSize="0"
+                       :margin="0"
+                       class="barcode"></vue-barcode> -->
+        </div>
+      </div>
+    </vue-easy-print>
+    <span slot="footer"
+          class="dialog-footer">
+      <el-button type="primary"
+                 @click="goPrint">打印</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+export default {
+  props: {
+    show: {
+      type: Boolean,
+      default: false
+    },
+    width: {
+      type: String,
+      default: '500px'
+    },
+    title: {
+      type: String,
+      default: '入库标签打印'
+    },
+    list: {
+      type: Array,
+      default: () => []
+    },
+    type: {
+      type: String,
+      default: '物料'
+    }
+  },
+  components: {
+    vueEasyPrint: () => import('vue-easy-print'),
+    VueBarcode: () => import('vue-barcode')
+  },
+  data() {
+    return {
+      modelList: [
+         {
+          label: `仓库类型`,
+          value: 'cangKuLeiXing',
+        },
+        {
+          label: `物料类型`,
+          value: 'wuLiaoLeiXing',
+        },
+        {
+          label: `物料名称`,
+          value: 'mingCheng',
+          width: '100%'
+        },
+        {
+          label: `物料编码`,
+          value: 'bianHao'
+        },
+        {
+          label: '货 号',
+          value: 'huoHao'
+        },
+        {
+          label: '批 号',
+          value: 'piHao'
+        },
+        {
+          label: '有效期',
+          value: 'youXiaoQi'
+        },
+        {
+          label: '存放位置',
+          value: 'cunFangWeiZhi',
+          width: '100%'
+        },
+        {
+          label: '储存条件',
+          value: 'cunChuYaoQiu',
+          width: '100%'
+        },
+{
+          label: '备注',
+          value: 'beiZhu',
+          width: '100%'
+        },
+      ]
+    }
+  },
+  methods: {
+    goPrint() {
+      this.$refs.easyPrint.print()
+    }
+  }
+}
+</script>
+<style lang="scss">
+.print-dialog {
+  width: 500px;
+  min-width: 500px;
+  height: 680px;
+}
+.title {
+  font-size: 16px;
+  color: #01a39e;
+  margin: 0;
+  margin-bottom: 10px;
+}
+.content {
+  // display: flex;
+  // flex-wrap: wrap;
+  // justify-content: center;
+  padding: 10px;
+//   min-height: 380px;
+  overflow: auto;
+  .box {
+    position: relative;
+    width: 300px;
+    height: 240px;
+    font-size: 14px;
+    padding: 10px;
+    margin: 0 auto 20px;
+    border: 1px solid #000;
+    border-radius: 4px;
+    .item {
+      margin-bottom: 6px;
+      display: inline-block;
+      min-width: 50%;
+      .name {
+        white-space: nowrap;
+      }
+    }
+    .barcode {
+      position: absolute;
+      text-align: center;
+      bottom: 10px;
+      left: 0;
+      right: 0;
+    }
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+  .next-page {
+    page-break-after: always;
+  }
+}
+</style>

+ 12 - 2
src/business/platform/data/templaterender/templates/list.vue

@@ -233,6 +233,7 @@
         />
         <Scan :currentScan="scanName" :scanVisible="scanVisible" :obj="obj" v-if="scanVisible" @scanOff="scanOff" />
         <print :show="showPrint" :list="printList" :type="printType" />
+        <labelPrint :show="showPrintYi" :list="printList" :type="printType" />
     </div>
 </template>
 <script>
@@ -296,7 +297,9 @@
             IbpsImage,
             DictionaryFormat,
             Scan,
-            Print: () => import('../components/print')
+            Print: () => import('../components/print'),
+            LabelPrint: () => import('../components/labelPrint')
+
             // BpmnFormrender
             // DataTemplateFormat
         },
@@ -393,6 +396,7 @@
                 dialogTemplateAtts: {},
                 formPrintTemplateDialogVisible: false,
                 printTemplateId: '',
+                showPrintYi: false,
                 showPrint: false,
                 printType: '',
                 printList: []
@@ -757,12 +761,18 @@
                 this.scanVisible = true
                 this.scanName = val
             },
-            /*按钮传参*/
+            // /*按钮传参*/
             scanHandlerObj(val, obj) {
                 this.scanVisible = true
                 this.scanName = val
                 this.obj = obj
             },
+            // 一般验收物料标签打印
+            labelPrint(data, type) {
+                this.showPrintYi = true
+                this.printList = data
+                this.printType = type
+            },
             // 标签打印
             printTag(data, type) {
                 this.showPrint = true

+ 9 - 24
src/business/platform/file/uploader/index.vue

@@ -197,40 +197,25 @@
              * 文件类型的限制
              */
             fileExtType() {
-                const accept = this.accept
-                const acceptTypes = this.acceptTypes
-                const fileTypes = this.fileTypes
-                let type = ''
                 let targetFileTypes = []
                 this.targetExt = false
-                for (const i in acceptTypes) {
-                    if (acceptTypes[i] === accept) {
-                        type = i
-                        targetFileTypes = fileTypes[i]
-                    } else {
-                        if (accept === '*') {
-                            // 不限制
-                            targetFileTypes = '*'
-                        } else {
-                            // 自定义
-                            targetFileTypes = accept.split(',')
-                        }
-                    }
+                if (this.accept === '*') {
+                    // 不限制
+                    targetFileTypes = '*'
+                } else {
+                    // 自定义
+                    targetFileTypes = this.accept.split(',')
                 }
                 const fileList = this.multiple ? this.fileList : [this.fileList]
                 if (targetFileTypes !== '*') {
                     this.targetExt = fileList.every(i => {
-                        // console.log(targetFileTypes, `.${i.ext}`) // 控件类型集,过滤文件得后缀
-                        if (type === 'compress') {
-                            return targetFileTypes.includes(`${i.ext}`)
-                        } else {
-                            return targetFileTypes.includes(`${i.ext}`)
-                        }
+                        // console.log(targetFileTypes, `.${i.ext}`)
+                        return targetFileTypes.includes(`.${i.ext}`)
                     })
                 } else {
                     this.targetExt = true
                 }
-                // console.log(fileList, this.targetExt, 'lll') // 已上传文件,过滤结果
+                // console.log(fileList, this.targetExt)
                 return this.targetExt
             },
             handleConfirm() {

+ 329 - 325
src/business/platform/file/uploader/upload.vue

@@ -1,337 +1,341 @@
 <template>
-  <div
-    :style="{
-      height:height
-    }"
-    class="ibps-uplpad"
-  >
-    <div class="header">
-      <div class="btns">
-        <el-upload
-          :file-list="fileList"
-          :on-remove="handleRemove"
-          :on-success="handleSuccess"
-          :on-error="handleError"
-          :before-upload="beforeUpload"
-          :http-request="httpRequest"
-          :multiple="multiple"
-          :accept="accept"
-          :show-file-list="false"
-          action="https://www.bpmhome.cn/post"
-          list-type="picture"
-          name="file"
-        >
-          <el-button slot="trigger" icon="el-icon-upload" type="primary" size="mini">选择要上传的文件</el-button>
-          <el-button
-            type="danger"
-            icon="ibps-icon-remove"
-            class="ibps-ml-5"
-            @click="clearFiles"
-            size="mini"
-          >清空文件</el-button>
-        </el-upload>
-      </div>
-    </div>
-    <div class="uploader">
-      <el-upload
-        ref="upload"
-        :file-list="fileList"
-        :on-remove="handleRemove"
-        :on-success="handleSuccess"
-        :on-error="handleError"
-        :before-upload="beforeUpload"
-        :http-request="httpRequest"
-        :multiple="multiple"
-        :accept="accept"
-        action="https://www.bpmhome.cn/post"
-        name="file"
-        drag
-        list-type="picture-card"
-      >
-        <i class="el-icon-upload" />
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-      </el-upload>
+    <div :style="{height: height}" class="ibps-uplpad">
+        <div class="header">
+            <div class="btns">
+                <el-upload
+                    :file-list="fileList"
+                    :on-remove="handleRemove"
+                    :on-success="handleSuccess"
+                    :on-error="handleError"
+                    :before-upload="beforeUpload"
+                    :http-request="httpRequest"
+                    :multiple="multiple"
+                    :accept="accept"
+                    :show-file-list="false"
+                    action="https://www.bpmhome.cn/post"
+                    list-type="picture"
+                    name="file"
+                >
+                    <el-button
+                        slot="trigger"
+                        icon="el-icon-upload"
+                        type="primary"
+                        size="mini"
+                        >选择要上传的文件</el-button
+                    >
+                    <el-button
+                        type="danger"
+                        icon="ibps-icon-remove"
+                        class="ibps-ml-5"
+                        @click="clearFiles"
+                        size="mini"
+                        >清空文件</el-button
+                    >
+                </el-upload>
+            </div>
+        </div>
+        <div class="uploader">
+            <el-upload
+                ref="upload"
+                :file-list="fileList"
+                :on-remove="handleRemove"
+                :on-success="handleSuccess"
+                :on-error="handleError"
+                :before-upload="beforeUpload"
+                :http-request="httpRequest"
+                :multiple="multiple"
+                :accept="accept"
+                action="https://www.bpmhome.cn/post"
+                name="file"
+                drag
+                list-type="picture-card"
+            >
+                <i class="el-icon-upload" />
+                <div class="el-upload__text">
+                    将文件拖到此处,或<em>点击上传</em>
+                </div>
+            </el-upload>
 
-      <el-dialog :visible.sync="dialogVisible" append-to-body>
-        <img :src="dialogImageUrl" width="100%" alt="">
-      </el-dialog>
+            <el-dialog :visible.sync="dialogVisible" append-to-body>
+                <img :src="dialogImageUrl" width="100%" alt="" />
+            </el-dialog>
+        </div>
     </div>
-  </div>
 </template>
 <script>
-import { uploadFile, remove } from '@/api/platform/file/attachment'
-import { fileTypes, allFileTypes, accept as acceptTypes } from '@/business/platform/file/constants/fileTypes'
-export default {
-  props: {
-    height: String,
-    init: Boolean,
-    limit: Number, // 个数
-    multiple: Boolean,
-    fileSize: Number, // 尺寸
-    accept: String// 类型
-  },
-  data() {
-    return {
-      uploadData: {}, // 可以添加分类、文件等信息
-      fileList: [],
-      dialogVisible: false,
-      targetExt: false,
-      dialogImageUrl: '',
-      fileTypes: fileTypes,
-      allFileTypes: allFileTypes,
-      acceptTypes: acceptTypes
-    }
-  },
-  watch: {
-    init: {
-      handler() {
-        if (this.init) {
-          this.fileList = []
+    import { uploadFile, remove } from '@/api/platform/file/attachment'
+    import { fileTypes, allFileTypes, accept as acceptTypes } from '@/business/platform/file/constants/fileTypes'
+    export default {
+        props: {
+            height: String,
+            init: Boolean,
+            limit: Number, // 个数
+            multiple: Boolean,
+            fileSize: Number, // 尺寸
+            accept: String // 类型
+        },
+        data() {
+            return {
+                uploadData: {}, // 可以添加分类、文件等信息
+                fileList: [],
+                dialogVisible: false,
+                targetExt: false,
+                dialogImageUrl: '',
+                fileTypes: fileTypes,
+                allFileTypes: allFileTypes,
+                acceptTypes: acceptTypes
+            }
+        },
+        watch: {
+            init: {
+                handler() {
+                    if (this.init) {
+                        this.fileList = []
+                    }
+                },
+                immediate: true
+            }
+        },
+        methods: {
+            /**
+             * 文件上传
+             */
+            httpRequest(options) {
+                return uploadFile(options.file, {})
+            },
+            // 做文件校验
+            beforeUpload(file) {
+                if (this.$utils.isNotEmpty(this.limit) && this.limit === 0) {
+                    this.$message({
+                        message: '上传文件个数不能为0,请重新设置',
+                        type: 'warning'
+                    })
+                    return false
+                }
+                if (this.$utils.isNotEmpty(this.fileSize) && file.size > this.fileSize) {
+                    this.$message.closeAll()
+                    this.$message({
+                        message: '上传文件的大小大于' + this.$utils.formatSize(this.fileSize),
+                        type: 'warning'
+                    })
+                    return false
+                }
+                // if (this.$utils.isNotEmpty(this.accept) && this.handleAccpt(file) || this.fileExtType(file)) {
+                if (
+                    this.$utils.isNotEmpty(this.accept) &&
+                    this.accept &&
+                    !this.fileExtType(file)
+                ) {
+                    this.$message.closeAll()
+                    this.$message({
+                        message: '不允许的文件类型',
+                        type: 'warning'
+                    })
+                    return false
+                }
+                // console.log(this.fileList, 'beforeUpload')
+                if (!this.multiple && this.$utils.isNotEmpty(this.fileList)) {
+                    this.$message.closeAll()
+                    this.$message({
+                        message: '附件上传设置为单选,文件上传只能为1个',
+                        type: 'warning'
+                    })
+                    return false
+                }
+            },
+            /**
+             * 文件类型的检测
+             */
+            fileExtType(file) {
+                const accept = this.accept
+                const acceptTypes = this.acceptTypes
+                const fileTypes = this.fileTypes
+                const arr = file.name.split('.')
+                const result = arr[arr.length - 1]
+                let type = ''
+                this.targetExt = false
+                for (const i in acceptTypes) {
+                    if (acceptTypes[i] === accept) {
+                        type = i
+                    }
+                }
+                if (type !== '' && this.accept !== '*') {
+                    // 现存的附件类型
+                    const targetFileTypes = fileTypes[type]
+                    this.targetExt = targetFileTypes.includes(result)
+                } else {
+                    if (this.accept === '*') {
+                        // 不限制
+                        this.targetExt = true
+                    } else {
+                        // 自定义
+                        const targetFileTypes = this.accept.split(',')
+                        this.targetExt = targetFileTypes.includes('.' + result)
+                    }
+                }
+                return this.targetExt
+            },
+            /**
+             * 文件类型的限制
+             */
+            // handleAccpt (file) {
+            //     const rExt = /\.\w+$/
+            //     let accept = ''
+            //     const arr = []
+            //     const extensions = this.accept.split(',')
+            //     const acceptTypes = this.acceptTypes
+            //     const acceptArr = []
+            //     for (var i in acceptTypes) {
+            //         acceptArr.push(acceptTypes[i])
+            //     }
+            //     const inAcceptTypes = acceptArr.includes(this.accept)
+
+            //     for (let i = 0, len = extensions.length; i < len; i++) {
+            //         const item = extensions[i]
+            //         if (item) {
+            //             if (item.indexOf('/')) {
+            //                 const v = item.split('/')
+            //                 let k = item
+            //                 if (v.length > 0) {
+            //                     k = v[v.length - 1]
+            //                 }
+            //                 arr.push(k)
+            //             } else {
+            //                 arr.push(item)
+            //             }
+            //         }
+            //     }
+            //     if (arr.length) {
+            //         accept = '\\.' + arr.join(',').replace(/,/g, '$|\\.').replace(/\*/g, '.*') + '$'
+            //     }
+            //     accept = new RegExp(accept, 'i')
+            //     // 如果名字中有后缀,才做后缀白名单处理。
+            //     return !file || !file.size || this.accept && rExt.exec(file.name) && !accept.test(file.name) && inAcceptTypes
+            // },
+            handleSuccess(response, file, fileList) {
+                let ext = this.getExtName(file.name)
+                let url = ''
+                if (this.$utils.isEmpty(ext)) {
+                    ext = 'file'
+                }
+                if (['jpg', 'jpeg', 'bmp', 'png'].includes(ext)) {
+                    url = file.url
+                } else {
+                    url = `${this.$baseUrl}images/file/${ext}.png`
+                }
+                file.url = url
+                this.fileList = fileList
+                this.emitCallback(fileList)
+            },
+            // 获取扩展名
+            getExtName(name) {
+                return name ? name.substring(name.lastIndexOf('.') + 1, name.length) : ''
+            },
+            handleError(err, file, fileList) {
+                this.fileList = fileList
+                if (!(err instanceof Error)) {
+                    const data = this.$utils.parseJSON(err.message)
+                    this.$message.closeAll()
+                    this.$message({
+                        message: this.$utils.isNotEmpty(data.message) ? data.message : data.cause,
+                        type: 'error'
+                    })
+                }
+            },
+            handleRemove(file, fileList) {
+                this.fileList = fileList
+                if (file && file.response) {
+                    this.handleRemoteRemove(file.response.data.id, () => {
+                        this.emitCallback(fileList)
+                    })
+                }
+            },
+            emitCallback(fileList) {
+                this.$emit('callback', this.convertFileDataList(fileList, this.multiple))
+            },
+            convertFileDataList(fileList, multiple) {
+                if (this.$utils.isEmpty(fileList)) {
+                    return multiple ? [] : {}
+                }
+                const rtn = []
+                fileList.forEach((file) => {
+                    if (this.$utils.isNotEmpty(file.response)) {
+                        rtn.push(file.response.data)
+                    }
+                })
+                return multiple ? rtn : rtn[rtn.length - 1]
+            },
+            /**
+             * 清空
+             */
+            clearFiles() {
+                const ids = this.$refs.upload.uploadFiles.map((file) => {
+                        // console.log(file.response.data.id)
+                        return file.response.data.id
+                    }).join(',')
+
+                if (this.$utils.isEmpty(ids)) {
+                    this.$message.warning('请先上传文件!')
+                    return
+                }
+                this.handleRemoteRemove(ids, () => {
+                    this.$refs.upload.clearFiles()
+                    this.$emit('callback', this.multiple ? [] : {})
+                })
+            },
+            handleRemoteRemove(ids, callback) {
+                remove({ attachmentIds: ids }).then(res => {
+                    const _this = this
+                    // this.fileList = []
+                    callback(_this)
+                }).catch(() => {})
+            },
+            handlePreview(file) {
+                this.dialogVisible = true
+                //  this.dialogImageUrl = file.url
+            }
         }
-      },
-      immediate: true
     }
-  },
-  methods: {
-    /**
-     * 文件上传
-     */
-    httpRequest(options) {
-      return uploadFile(options.file, {})
-    },
-    // 做文件校验
-    beforeUpload(file) {
-      if (this.$utils.isNotEmpty(this.limit) && this.limit === 0) {
-        this.$message({
-          message: '上传文件个数不能为0,请重新设置',
-          type: 'warning'
-        })
-        return false
-      }
-      if (this.$utils.isNotEmpty(this.fileSize) && file.size > this.fileSize) {
-        this.$message.closeAll()
-        this.$message({
-          message: '上传文件的大小大于' + this.$utils.formatSize(this.fileSize),
-          type: 'warning'
-        })
-        return false
-      }
-      // if (this.$utils.isNotEmpty(this.accept) && this.handleAccpt(file) || this.fileExtType(file)) {
-      if (this.$utils.isNotEmpty(this.accept) && this.accept && !this.fileExtType(file)) {
-        this.$message.closeAll()
-        this.$message({
-          message: '不允许的文件类型',
-          type: 'warning'
-        })
-        return false
-      }
-      // console.log(this.fileList, 'beforeUpload')
-      if (!this.multiple && this.$utils.isNotEmpty(this.fileList)) {
-        this.$message.closeAll()
-        this.$message({
-          message: '附件上传设置为单选,文件上传只能为1个',
-          type: 'warning'
-        })
-        return false
-      }
-    },
-    /**
-     * 文件类型的检测
-     */
-    fileExtType(file) {
-      const accept = this.accept
-      const acceptTypes = this.acceptTypes
-      const fileTypes = this.fileTypes
-      const arr = file.name.split('.')
-      const result = arr[arr.length - 1]
-      let type = ''
-      this.targetExt = false
-      for (const i in acceptTypes) {
-        if (acceptTypes[i] === accept) {
-          type = i
+</script>
+<style lang="scss">
+    .ibps-uplpad {
+        overflow-y: auto;
+        padding: 5px;
+        .header {
+            height: 45px;
+            border-bottom: 1px solid #dadada;
+            margin: 0;
+            padding: 0;
+            line-height: 45px;
+            vertical-align: middle;
+            position: relative;
         }
-      }
-      if (type !== '' && this.accept !== '*') {
-        // 现存的附件类型
-        const targetFileTypes = fileTypes[type]
-        this.targetExt = targetFileTypes.includes(result)
-      } else {
-        if (this.accept === '*') {
-        // 不限制
-          this.targetExt = true
-        } else {
-        // 自定义
-          const targetFileTypes = this.accept.split(',')
-          this.targetExt = targetFileTypes.includes('.' + result)
+        .btns {
+            position: absolute;
+            top: 7px;
+            right: 0;
+            line-height: 30px;
         }
-      }
-      return this.targetExt
-    },
-    /**
-     * 文件类型的限制
-     */
-    // handleAccpt(file) {
-    //   const rExt = /\.\w+$/
-    //   let accept = ''
-    //   const arr = []
-    //   const extensions = this.accept.split(',')
-
-    //   const acceptTypes = this.acceptTypes
-    //   const acceptArr = []
-    //   for (var i in acceptTypes) {
-    //     acceptArr.push(acceptTypes[i])
-    //   }
-    //   const inAcceptTypes = acceptArr.includes(this.accept)
-
-    //   for (let i = 0, len = extensions.length; i < len; i++) {
-    //     const item = extensions[i]
-    //     if (item) {
-    //       if (item.indexOf('/')) {
-    //         const v = item.split('/')
-    //         let k = item
-    //         if (v.length > 0) {
-    //           k = v[v.length - 1]
-    //         }
-    //         arr.push(k)
-    //       } else {
-    //         arr.push(item)
-    //       }
-    //     }
-    //   }
-    //   if (arr.length) {
-    //     accept = '\\.' + arr.join(',')
-    //       .replace(/,/g, '$|\\.')
-    //       .replace(/\*/g, '.*') + '$'
-    //   }
-    //   accept = new RegExp(accept, 'i')
-    //   return !file || !file.size || this.accept &&
-    //   // 如果名字中有后缀,才做后缀白名单处理。
-    //      rExt.exec(file.name) && !accept.test(file.name) && inAcceptTypes
-    // },
-    handleSuccess(response, file, fileList) {
-      let ext = this.getExtName(file.name)
-      let url = ''
-      if (this.$utils.isEmpty(ext)) {
-        ext = 'file'
-      }
-      if (['jpg', 'jpeg', 'bmp', 'png'].includes(ext)) {
-        url = file.url
-      } else {
-        url = `${this.$baseUrl}images/file/${ext}.png`
-      }
-      file.url = url
-      this.fileList = fileList
-      this.emitCallback(fileList)
-    },
-    // 获取扩展名
-    getExtName(name) {
-      return name ? name.substring(name.lastIndexOf('.') + 1, name.length) : ''
-    },
-    handleError(err, file, fileList) {
-      this.fileList = fileList
-      if (!(err instanceof Error)) {
-        const data = this.$utils.parseJSON(err.message)
-        this.$message.closeAll()
-        this.$message({
-          message: this.$utils.isNotEmpty(data.message) ? data.message : data.cause,
-          type: 'error'
-        })
-      }
-    },
-    handleRemove(file, fileList) {
-      this.fileList = fileList
-      if (file && file.response) {
-        this.handleRemoteRemove(file.response.data.id, () => {
-          this.emitCallback(fileList)
-        })
-      }
-    },
-    emitCallback(fileList) {
-      this.$emit('callback', this.convertFileDataList(fileList, this.multiple))
-    },
-    convertFileDataList(fileList, multiple) {
-      if (this.$utils.isEmpty(fileList)) {
-        return multiple ? [] : {}
-      }
-      const rtn = []
-      fileList.forEach((file) => {
-        if (this.$utils.isNotEmpty(file.response)) {
-          rtn.push(file.response.data)
+        .uploader {
+            list-style: none;
+            margin: 0;
+            padding-top: 5px;
+        }
+        .el-upload--picture-card {
+            border: 0;
+        }
+        .el-upload-dragger {
+            width: 148px;
+            height: 148px;
+        }
+        .el-upload-list--picture-card .el-upload-list__item-name {
+            display: block;
+            position: absolute;
+            top: 0px;
+            background: rgba(0, 0, 0, 0.6);
+            color: white;
+            margin: 0;
+            width: 100%;
         }
-      })
-      return multiple ? rtn : rtn[rtn.length - 1]
-    },
-    /**
-     * 清空
-     */
-    clearFiles() {
-      const ids = this.$refs.upload.uploadFiles.map((file) => {
-        // console.log(file.response.data.id)
-        return file.response.data.id
-      }).join(',')
-
-      if (this.$utils.isEmpty(ids)) {
-        this.$message.warning('请先上传文件!')
-        return
-      }
-      this.handleRemoteRemove(ids, () => {
-        this.$refs.upload.clearFiles()
-        this.$emit('callback', this.multiple ? [] : {})
-      })
-    },
-    handleRemoteRemove(ids, callback) {
-      remove({ attachmentIds: ids }).then(response => {
-        const _this = this
-        this.fileList = []
-        callback(_this)
-      }).catch(() => {})
-    },
-    handlePreview(file) {
-      this.dialogVisible = true
-    //  this.dialogImageUrl = file.url
     }
-  }
-}
-</script>
-<style lang="scss" >
-.ibps-uplpad{
-  overflow-y: auto;
-  padding: 5px;
-  .header{
-     height: 45px;
-    border-bottom: 1px solid #dadada;
-    margin: 0;
-    padding: 0;
-    line-height: 45px;
-    vertical-align: middle;
-    position: relative;
-  }
-  .btns{
-    position: absolute;
-    top: 7px;
-    right: 0;
-    line-height: 30px;
-  }
-  .uploader{
-    list-style: none;
-    margin: 0;
-    padding-top: 5px;
-  }
-  .el-upload--picture-card{
-    border: 0;
-  }
-  .el-upload-dragger{
-    width: 148px;
-    height: 148px;
-  }
-  .el-upload-list--picture-card .el-upload-list__item-name {
-    display: block;
-    position: absolute;
-    top: 0px;
-    background: rgba(0, 0, 0, 0.6);
-    color: white;
-    margin: 0;
-    width: 100%;
-  }
-}
 </style>

+ 1 - 1
src/setting.js

@@ -141,7 +141,7 @@ export default {
     active: true
   },
   // 最长请求时间
-  requestTimeout: 6000 * 10,
+  requestTimeout: 1000 * 90,
   // 白名单,不重定向白名单,不经过token校验的路由
   whiteRouterList: [
     '/login',

+ 103 - 63
src/views/crm/component/customerStatistics.vue

@@ -31,77 +31,117 @@ import echarts from 'echarts'
         if (true) {
             let myChart =  echarts.init(document.getElementById("chart"))
             let option = {
-                legend: {                  
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {
+                    top: '5%',
+                    left: 'center',
                     textStyle:{
-                        color:'#fff'
+                        color:'#fff',
+                        fontSize: 15,
+                        fontWeight: 'bold'
                     }
                 },
-                tooltip: {},
                 color:['#FF3366','#66FFFF','#66CC00'],
-                dataset: {
-                    dimensions: ['lei_bie_', 'qznum', 'ynnum', 'khnum'],
-                    source: this.data
-                },
-                xAxis: { 
-                    type: 'category',
-                    axisLabel:{//修改坐标系字体颜色
-                        show:true,
-                        textStyle:{
-                            color:"#fff"
-                        }
-                    },
-                    axisLine: {
-                        show: true,
-                        lineStyle: {
-                            color: "rgba(255,255,255,1)",
-                            type: "solid"
-                        }
-                    }
-                },
-                yAxis: {
-                    axisLabel:{//修改坐标系字体颜色
-                        show:true,
-                        textStyle:{
-                            color:"#fff"
-                        }
-                    },
-                    axisLine: {//y轴线的颜色以及宽度
-                        show: true,
-                        lineStyle: {
-                            color: "rgba(255,255,255,1)",
-                            type: "solid"
-                        },
-                    },
-                    splitLine: {
-                        show: false
-                    }
-                },
-                // Declare several bar series, each will be mapped
-                // to a column of dataset.source by default.
                 series: [
-                    { 
-                        name: '潜在客户数量',
-                        type: 'bar',
-                        label: {
-                            show: true,
-                            position: 'top'
-                        } 
-                    }, { 
-                        name: '意向客户数量',
-                        type: 'bar', 
-                        label: {
-                            show: true,
-                            position: 'top'
-                        } 
-                    }, {
-                        name: '已签约客户数量',
-                        type: 'bar',
+                    {
+                        type: 'pie',
+                        // radius: ['40%', '70%'],
+                        avoidLabelOverlap: false,
                         label: {
-                            show: true,
-                            position: 'top'
-                        } 
+                            // show: true,
+                            formatter: '{b}: {@2012} ({d}%)',
+                            position: 'inner',
+                            textStyle: {
+                                fontSize: 18,
+                                fontWeight: 'bold'
+                            }
+                        },
+                        emphasis: {
+                            label: {
+                                show: true,
+                                fontSize: 20,
+                                fontWeight: 'bold'
+                            }
+                        },
+                        labelLine: {
+                            show: false
+                        },
+                        data: this.data
                     }
                 ]
+                // legend: {                  
+                //     textStyle:{
+                //         color:'#fff'
+                //     }
+                // },
+                // tooltip: {},
+                // color:['#FF3366','#66FFFF','#66CC00'],
+                // dataset: {
+                //     dimensions: ['lei_bie_', 'qznum', 'ynnum', 'khnum'],
+                //     source: this.data
+                // },
+                // xAxis: { 
+                //     type: 'category',
+                //     axisLabel:{//修改坐标系字体颜色
+                //         show:true,
+                //         textStyle:{
+                //             color:"#fff"
+                //         }
+                //     },
+                //     axisLine: {
+                //         show: true,
+                //         lineStyle: {
+                //             color: "rgba(255,255,255,1)",
+                //             type: "solid"
+                //         }
+                //     }
+                // },
+                // yAxis: {
+                //     axisLabel:{//修改坐标系字体颜色
+                //         show:true,
+                //         textStyle:{
+                //             color:"#fff"
+                //         }
+                //     },
+                //     axisLine: {//y轴线的颜色以及宽度
+                //         show: true,
+                //         lineStyle: {
+                //             color: "rgba(255,255,255,1)",
+                //             type: "solid"
+                //         },
+                //     },
+                //     splitLine: {
+                //         show: false
+                //     }
+                // },
+                // // Declare several bar series, each will be mapped
+                // // to a column of dataset.source by default.
+                // series: [
+                //     { 
+                //         name: '潜在客户数量',
+                //         type: 'bar',
+                //         label: {
+                //             show: true,
+                //             position: 'top'
+                //         } 
+                //     }, { 
+                //         name: '意向客户数量',
+                //         type: 'bar', 
+                //         label: {
+                //             show: true,
+                //             position: 'top'
+                //         } 
+                //     }, {
+                //         name: '已签约客户数量',
+                //         type: 'bar',
+                //         label: {
+                //             show: true,
+                //             position: 'top'
+                //         } 
+                //     }
+                // ]
             };
             option && myChart.setOption(option);
         }

+ 107 - 44
src/views/crm/tongji.vue

@@ -6,18 +6,21 @@
         <!-- 标题装饰组件 -->
           <header-decoration />
           <div class="pickDate">
-            <el-date-picker
-              v-model="allDate"
-              style="color: #000 !important;
-              width: 12%;
-              height:2.825rem;
-              line-height: 2.825rem;
-              text-align:center;"
-              type="month"
-              value-format="yyyy-MM"
-              @change="refreshAll(allDate)"
-              placeholder="选择月">
-            </el-date-picker>
+            <div style="width:100%;text-align:left;">
+              <span>月份:</span>
+              <el-date-picker
+                v-model="allDate"
+                style="color: #000 !important;
+                width: 12%;
+                height:2.825rem;
+                line-height: 2.825rem;
+                text-align:center;"
+                type="month"
+                value-format="yyyy-MM"
+                @change="refreshAll(allDate)"
+                placeholder="选择月">
+              </el-date-picker>
+            </div>
             <div 
               @click.prevent="goBack()" 
               style="width: 12%;
@@ -36,23 +39,36 @@
               <div class="nullDate" v-else>暂无数据</div>
             </div>
           </dv-border-box-7>
-          <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
+
+          <dv-border-box-7 style="width:49.5%;" backgroundColor="rgba(6, 30, 93, 0.5)">
+            <div class="ttitle">
+              <div class="middleFont" v-if="tableData.data && tableData.data.length">月度客户送检量</div>
+              <dv-scroll-board style="height: 87%;"
+                v-if="tableData.data && tableData.data.length"
+                :config="tableData"
+              />
+              <div class="nullDate" v-else>暂无数据</div>
+            </div>
+          </dv-border-box-7>
+          <!-- <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
             <div class="ttitle">
               <div v-if="msArr.length>0" class="middleFont">月度各渠道客户数量</div>
               <customer-statistics-m v-if="msArr.length>0" :data = 'msArr'></customer-statistics-m>
               <div class="nullDate" v-else>暂无数据</div>
             </div>
-          </dv-border-box-7>
+          </dv-border-box-7> -->
           
         </div>
-        <div class="customerD" v-if="authority">
-          <dv-border-box-7 style="width:49.5%;" backgroundColor="rgba(6, 30, 93, 0.5)">
-            <div class="middleFontC" v-if="tableData.data && tableData.data.length">月度客户销售量</div>
-            <dv-scroll-board style="height: 87%;"
-              v-if="tableData.data && tableData.data.length"
-              :config="tableData"
-            />
-            <div class="nullDate" v-else>暂无数据</div>
+        <!-- <div class="customerD" v-if="authority"> -->
+          <!-- <dv-border-box-7 style="width:49.5%;" backgroundColor="rgba(6, 30, 93, 0.5)">
+            <div class="ttitle">
+              <div class="middleFontC" v-if="tableData.data && tableData.data.length">月度客户销售量</div>
+              <dv-scroll-board style="height: 87%;"
+                v-if="tableData.data && tableData.data.length"
+                :config="tableData"
+              />
+              <div class="nullDate" v-else>暂无数据</div>
+            </div>
           </dv-border-box-7>
           <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
             <div class="ttitle">
@@ -60,7 +76,7 @@
               <individual-performance v-if="inArr.length>0" :data = 'inArr'></individual-performance>
               <div class="nullDate" v-else>暂无数据</div>
             </div>
-          </dv-border-box-7>
+          </dv-border-box-7> -->
 <!--           
           <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
             <div class="ttitle">
@@ -76,7 +92,7 @@
               <div class="nullDate" v-else>暂无数据</div>
             </div>
           </dv-border-box-7> -->
-        </div>
+        <!-- </div> -->
         <div class="customerG" v-else>
           <!-- <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
             <div class="ttitle">
@@ -128,7 +144,10 @@
         pmArr:[],
         peArr:[],
         tableData:{
-          header: ['公司名称', '付款方式', '价格(元)'],
+          header: ['<span style="font-size:12px">送检公司</span>', '<span style="font-size:12px">付款方式</span>', '<span style="font-size:12px">价格</span>(元)</span>'],
+          rowNum: 15,
+          columnWidth: [400, 150,400],
+          align: ['left','left','right'],
           data: [
             ['行1列1', '行1列2', '行1列3'],
             ['行2列1', '行2列2', '行2列3'],
@@ -156,13 +175,32 @@
       personPerformance,
       personPerformanceMonth
     },
+    created() {
+      if (screenfull.isEnabled && !screenfull.isFullscreen) {
+        this.allView()
+      }
+
+      // this.refreshAll(this.allDate)
+
+      // if (this.timer){
+      //   clearInterval(this.timer)
+      // }
+
+      // this.timer = setInterval(() => {
+      //   this.refreshAll(this.allDate)
+      // },600000)
+    },
     mounted() {
       //权限
-      this.authorityJudgment()
+      // this.authorityJudgment()
       //初始化
       this.Date()
     },
     methods: {
+      allView() {
+        // 默认显示全屏
+        screenfull.request()
+      },
       Date() {
         const nowDate = new Date();
         const date = {
@@ -177,8 +215,8 @@
         let dateNum = new Date(date.year, date.month, 0).getDate();
 
         this.getCustomerStatisticsYear(this.allDate)
-        this.getCustomerStatisticsMonth(this.allDate)
-        this.getIndividualPerformanceMonth(this.allDate)
+        // this.getCustomerStatisticsMonth(this.allDate)
+        // this.getIndividualPerformanceMonth(this.allDate)
         this.getIndividualPerformanceCustomerMonth(this.allDate)
         // this.getTeamPerformance(this.allDate)
         // this.getTeamPerformanceMonth(this.allDate)
@@ -191,8 +229,8 @@
       refreshAll(date){
         let dateNum = new Date(this.allDate.split('-')[0], Number(this.allDate.split('-')[1])+'', 0).getDate();
         this.getCustomerStatisticsYear(date)
-        this.getCustomerStatisticsMonth(date)
-        this.getIndividualPerformanceMonth(date)
+        // this.getCustomerStatisticsMonth(date)
+        // this.getIndividualPerformanceMonth(date)
         this.getIndividualPerformanceCustomerMonth(date)
         // this.getTeamPerformance(date)
         // this.getTeamPerformanceMonth(date)
@@ -201,14 +239,16 @@
       },
       getCustomerStatisticsYear(date){
         this.csArr.length = 0
-        let sql = "select * from (select a.lai_yuan_qu_dao_,SUM(IFNULL(a.qznum,0)) as qznum ,SUM(IFNULL(a.yxnum,0)) as ynnum,SUM(IFNULL(a.khnum,0)) as khnum,IFNULL(b.lei_bie_,'空') as lei_bie_ from (((select COUNT(lai_yuan_qu_dao_) as qznum, lai_yuan_qu_dao_, null as yxnum,null as khnum from t_qzkhb GROUP BY lai_yuan_qu_dao_) UNION (select null, lai_yuan_qu_dao_, COUNT(lai_yuan_qu_dao_) as yxnum,null from t_yxkh GROUP BY lai_yuan_qu_dao_) UNION (select null, ke_hu_lai_yuan_,null, COUNT(ke_hu_lai_yuan_) as khnum from t_khxx GROUP BY ke_hu_lai_yuan_)) as a LEFT JOIN (select t_qdgl.id_,t_qdlbb.lei_bie_ from t_qdgl LEFT JOIN t_qdlbb on t_qdgl.qu_dao_lei_bie_ = t_qdlbb.id_) as b on a.lai_yuan_qu_dao_ = b.id_) GROUP BY b.lei_bie_ UNION select null,0,0,0,lei_bie_ from t_qdlbb) as c GROUP BY c.lei_bie_"
+        // let sql = "select * from (select a.lai_yuan_qu_dao_,SUM(IFNULL(a.qznum,0)) as qznum ,SUM(IFNULL(a.yxnum,0)) as ynnum,SUM(IFNULL(a.khnum,0)) as khnum,IFNULL(b.lei_bie_,'空') as lei_bie_ from (((select COUNT(lai_yuan_qu_dao_) as qznum, lai_yuan_qu_dao_, null as yxnum,null as khnum from t_qzkhb GROUP BY lai_yuan_qu_dao_) UNION (select null, lai_yuan_qu_dao_, COUNT(lai_yuan_qu_dao_) as yxnum,null from t_yxkh GROUP BY lai_yuan_qu_dao_) UNION (select null, ke_hu_lai_yuan_,null, COUNT(ke_hu_lai_yuan_) as khnum from t_khxx GROUP BY ke_hu_lai_yuan_)) as a LEFT JOIN (select t_qdgl.id_,t_qdlbb.lei_bie_ from t_qdgl LEFT JOIN t_qdlbb on t_qdgl.qu_dao_lei_bie_ = t_qdlbb.id_) as b on a.lai_yuan_qu_dao_ = b.id_) GROUP BY b.lei_bie_ UNION select null,0,0,0,lei_bie_ from t_qdlbb) as c GROUP BY c.lei_bie_"
+        let sql = "select COUNT(id_) as value, '潜在客户' as name from t_qzkhb where dang_qian_zhuang_ != '已转意向客户' UNION select COUNT(id_) ,'意向客户' from t_yxkh UNION select COUNT(a.id_) ,'已签约客户' from (select * from t_bjd where shi_fou_guo_shen_ = '已完成' GROUP BY ke_hu_ming_cheng_) as a"
         curdPost('sql',sql).then(res=>{
-          let arr = res.variables.data
-          for (var i = 0; i < arr.length; i++) {
-            if (arr[i].lei_bie_ != "空") {//判断key为999的对象是否存在,
-              this.csArr.push(arr[i])
-            }
-          }
+          console.log(sql)
+          this.csArr = res.variables.data
+          // for (var i = 0; i < arr.length; i++) {
+          //   if (arr[i].lei_bie_ != "空") {//判断key为999的对象是否存在,
+          //     this.csArr.push(arr[i])
+          //   }
+          // }
         })
       },
       getCustomerStatisticsMonth(date){
@@ -241,7 +281,7 @@
         curdPost('sql',sql).then(res=>{
           let arr = res.variables.data
           for (var i = 0; i < arr.length; i++) {
-            let changeArr = [arr[i].zhuan_huan_ke_hu_,arr[i].fu_kuan_fang_shi_,arr[i].jiage]
+            let changeArr = ['<span style="font-size:12px">' + arr[i].zhuan_huan_ke_hu_ + '</span>','<span style="font-size:12px">' + arr[i].fu_kuan_fang_shi_ + '</span>','<span style="font-size:12px">' + this.moneyFormat(arr[i].jiage) + '</span>']
             this.tableData.data.push(changeArr)
           }
           // }
@@ -325,6 +365,32 @@
             break;
           }
         }
+      },
+      moneyFormat (num, decimal = 2, split = ',') {
+        /*
+          parameter:
+          num:格式化目标数字
+          decimal:保留几位小数,默认2位
+          split:千分位分隔符,默认为,
+        */
+        if (isFinite(num)) { // num是数字
+          if (num === 0) { // 为0
+            return num.toFixed(decimal)
+          } else { // 非0
+            var res = ''
+            var dotIndex = String(num).indexOf('.')
+            if (dotIndex === -1) { // 整数
+              res = String(num).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`) + '.' + '0'.repeat(decimal)
+            } else { 
+              const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小数
+              const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小数位
+              res = String(numStr.slice(0, dotIndex)).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`) + decimals
+            }
+            return res
+          }
+        } else {
+          return '--'
+        }
       }
     }
   }
@@ -352,13 +418,13 @@
     // float: left;
     display: flex;
     justify-content: space-between;
-    margin: -3% 10% 0;
+    margin: -3% 11% 0;
   }
   .customerC{
     display: flex;
     justify-content: space-between;
     margin: 1% 1% 0;
-    height: 40% !important;
+    height: 85% !important;
     .dv-border-box-7{
       width: 49.5%;
     }
@@ -393,7 +459,6 @@
 		  align-items: center;
       justify-content: center;
     }
-    
   }
   .nullDate{
     height: 100%;
@@ -403,10 +468,8 @@
     font-size: 36px;
   }
   .middleFontC{
-      font-size: 120%;
-      font-weight: 600;
       text-align: center;
-      height: 13%;
+      height: 13% !important;
       display: flex;
 		  align-items: center;
       justify-content: center;

+ 3 - 3
src/views/platform/org/employee/edit/index.vue

@@ -47,7 +47,7 @@
                 />
             </el-tab-pane>
 
-            <el-tab-pane label="岗位信息" name="position-info">
+            <!-- <el-tab-pane label="岗位信息" name="position-info">
                 <position-info
                     ref="positionInfo"
                     :span="span"
@@ -56,7 +56,7 @@
                     :data="employee.posItemList"
                     @input="data => employee.posItemList = data"
                 />
-            </el-tab-pane>
+            </el-tab-pane> -->
             <el-tab-pane v-if="!infoIncludes('role-info')" name="role-info">
                 <span slot="label">角色信息
                     <el-tooltip
@@ -383,4 +383,4 @@
             height: calc(100% - 110px) !important;
         }
     }
-</style>
+<

+ 28 - 15
src/views/scientificPayoffs/js/index.js

@@ -1,7 +1,7 @@
 import echarts from "echarts"
 export default {
     //轮播表数据封装
-    getDataList(data){
+    getDataList(data) {
         let config = {
             header: data.header,
             data: data.data,
@@ -14,7 +14,7 @@ export default {
 
     //科研项目
     getKyxmList(datas) {
-        let header = ['全部参与人', '项目编号', '资助单位', '项目类型', '项目名称', '开始时间','结束时间', '立项经费(万元)']
+        let header = ['全部参与人', '项目编号', '资助单位', '项目类型', '项目名称', '开始时间', '结束时间', '立项经费(万元)']
         let data = []
         datas.forEach((item, index) => {
             let list = []
@@ -44,7 +44,7 @@ export default {
         datas.forEach((item, index) => {
             let list = []
             // list.push(item.NAME_ || '')
-            list.push(item.jiangLiXiangMu  || '')
+            list.push(item.jiangLiXiangMu || '')
             list.push(item.dan_wei_ || '')
             list.push(item.jiang_li_lei_xing || '')
             // list.push(item.ge_ren_pai_ming_ || '')
@@ -60,7 +60,7 @@ export default {
     },
     //SCI文章统计表
     getSCIwztjbList(datas) {
-        let header = ['全部作者', '论文题目', '期刊名称', 'JCR分区', '发表时间', '影响因子IF', '作者排名','WOS号']
+        let header = ['全部作者', '论文题目', '期刊名称', 'JCR分区', '发表时间', '影响因子IF', '作者排名', 'WOS号']
         let data = []
         datas.forEach((item, index) => {
             let list = []
@@ -72,7 +72,7 @@ export default {
             list.push(item.fa_biao_shi_jian_ || '')
             list.push(item.ying_xiang_y_z_if || '')
             list.push(item.zuo_zhe_pai_ming_ || '')
-            list.push(item.wos_hao_  || '')
+            list.push(item.wos_hao_ || '')
             data.push(list)
         });
         let dataList = {
@@ -84,7 +84,7 @@ export default {
     },
     //中文论文
     getZwlwList(datas) {
-        let header = ['全部作者', '论文题目', '期刊名称', '期卷号', '发表时间', '期刊类别', '作者排名','ISSN号']
+        let header = ['全部作者', '论文题目', '期刊名称', '期卷号', '发表时间', '期刊类别', '作者排名', 'ISSN号']
         let data = []
         datas.forEach((item, index) => {
             let list = []
@@ -108,7 +108,7 @@ export default {
     },
     //著作
     getZhuZuoList(datas) {
-        let header = ['全部作者', '专著名称',  '出版社', '出版时间', '编撰字数']
+        let header = ['全部作者', '专著名称', '出版社', '出版时间', '编撰字数']
         let data = []
         datas.forEach((item, index) => {
             let list = []
@@ -130,12 +130,12 @@ export default {
     },
     //专利
     getZhuanLiList(datas) {
-        let header = ['全部申请人', '专利名称', '专利权人', '类别', '申请时间', '授权时间','作者排名']
+        let header = ['全部申请人', '专利名称', '专利权人', '类别', '申请时间', '授权时间', '作者排名']
         let data = []
         datas.forEach((item, index) => {
             let list = []
             // list.push(item.NAME_ || '')
-            list.push(item.quan_bu_shen_qing  || '')
+            list.push(item.quan_bu_shen_qing || '')
             list.push(item.zhuanLiMingCheng || '')
             list.push(item.zhuan_li_quan_ren || '')
             list.push(item.lei_bie_ || '')
@@ -153,16 +153,16 @@ export default {
     },
     //继续教育项目/学术活动
     getJxjyxmxshdList(datas) {
-        let header = ['全部负责人', '项目编号', '会议名称', '项目级别','学分', '举办时间', '举办地点', '合作单位']
+        let header = ['全部负责人', '项目编号', '会议名称', '项目级别', '学分', '举办时间', '举办地点', '合作单位']
         let data = []
         datas.forEach((item, index) => {
             let list = []
             // list.push(item.NAME_ || '')
-            list.push(item.quan_bu_zuo_zhe_  || '')
+            list.push(item.quan_bu_zuo_zhe_ || '')
             list.push(item.xiangmMuBianHao || '')
             list.push(item.hui_yi_ming_cheng || '')
             list.push(item.xue_fen_ji_bie_ || '')
-            list.push(item.xue_fen_|| '')
+            list.push(item.xue_fen_ || '')
             list.push(item.ju_ban_shi_jian_ || '')
             list.push(item.ju_ban_di_dian_ || '')
             list.push(item.he_zuo_dan_wei_ || '')
@@ -180,6 +180,7 @@ export default {
         let list = []
         let listData = []
         datas.forEach(item => {
+            item.NAME_ = this.linHeg(item.NAME_)
             list.push(item.NAME_)
             let o = {
                 name: item.NAME_,
@@ -192,6 +193,20 @@ export default {
             series: listData
         }
         return config
+    },
+    linHeg(value) {
+        //rowMAx 控制一行多少字
+        let rowMAx = 1
+        let overValue = ''
+        for (let i = 0; i < value.length; i++) {
+            if ((i % rowMAx == 0) && (i != 0)) {
+                overValue += '\n'
+                overValue += value[i]
+            } else {
+                overValue += value[i]
+            }
+        }
+        return overValue
     }
 }
 
@@ -217,9 +232,7 @@ export const barData = {
             alignWithLabel: true
         },
         axisLabel: {
-            style: {
-                fill: '#fff'
-            }
+            color: '#FFF'
         },
         axisLine: {
             lineStyle: {

+ 114 - 68
src/views/statistics/index.vue

@@ -76,123 +76,131 @@
         </div>
         <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" ><div class="ttitle">质量方针:公正、科学、准确、高效</div></dv-border-box-7>
         <div class="congxiebox7" style="display: flex;justify-content: space-between;padding: 1.5% 0.2%;">
-          <div class="gongshiAll" style="width:16.4%">
-            <div class="touwidth">检测任务完成率=</div>
-            <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">完成检测项目数量</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">有效检测任务总数</div>
+          <div style="width:16.4%">
+            <div class="gongshiAll">
+              <div class="touwidth">检测任务完成率=</div>
+              <div style="margin: 0 0.2%;">
+                <div class="gongshiXian">完成检测项目数量</div>
+                <div style="text-align:center;font-size:12px;padding-top: 6%;">有效检测任务总数</div>
+              </div>
+              <div>×100%</div>
             </div>
-            <div>×100%</div>
+            <div class="mubiaozhi">当前目标值:{{quality[0].val}}</div>
           </div>
-          <div class="gongshiAll" style="width:21.4%">
-            <div class="touwidth">检测报告差错率=</div>
-            <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">统计期内检测数据的差错次数</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测报告总数</div>
+          <div style="width:21.4%">
+            <div class="gongshiAll">
+              <div class="touwidth">检测报告差错率=</div>
+              <div style="margin: 0 0.2%;">
+                <div class="gongshiXian">统计期内检测数据的差错次数</div>
+                <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测报告总数</div>
+              </div>
+              <div>×100%</div>
             </div>
-            <div>×100%</div>
+            <div class="mubiaozhi">当前目标值:{{quality[1].val}}</div>
           </div>
-          <div class="gongshiAll" style="width:17.4%">
-            <div class="touwidth">客户满意度=</div>
-            <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">评分得分*有效问卷数量</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">有效问卷总分</div>
+          <div style="width:17.4%">
+            <div class="gongshiAll">
+              <div class="touwidth">客户满意度=</div>
+              <div style="margin: 0 0.2%;">
+                <div class="gongshiXian">评分得分*有效问卷数量</div>
+                <div style="text-align:center;font-size:12px;padding-top: 6%;">有效问卷总分</div>
+              </div>
+              <div>×100%</div>
             </div>
-            <div>×100%</div>
+            <div class="mubiaozhi">当前目标值:{{quality[2].val}}</div>
           </div>
-          <div class="gongshiAll" style="width:17.4%">
-            <div class="touwidth">投诉率=</div>
-            <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">统计期内有效投诉项目数</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测委托总数</div>
+          <div style="width:17.4%">
+            <div class="gongshiAll">
+              <div class="touwidth">投诉率=</div>
+              <div style="margin: 0 0.2%;">
+                <div class="gongshiXian">统计期内有效投诉项目数</div>
+                <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测委托总数</div>
+              </div>
+              <div>×100%</div>
             </div>
-            <div>×100%</div>
+            <div class="mubiaozhi">当前目标值:{{quality[3].val}}</div>
           </div>
-          <div class="gongshiAll" style="width:27.4%">
-            <div class="touwidth">投诉回复及时率=</div>
-            <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">统计期内投诉处理完成次数</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内有效投诉总次数</div>
+          <div style="width:27.4%">
+            <div class="gongshiAll">
+              <div class="touwidth">投诉回复及时率=</div>
+              <div style="margin: 0 0.2%;">
+                <div class="gongshiXian">统计期内投诉处理完成次数</div>
+                <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内有效投诉总次数</div>
+              </div>
+              <div>×100%</div>
             </div>
-            <div>×100%</div>
+            <div class="mubiaozhi">当前目标值:{{quality[4].val}}</div>
           </div>
         </div>
-        <div class="congxiebox7">
+        <div class="congxiebox7" v-if="pageOT">
           <div class="ttitle" style="text-align: center;">质量目标统计</div>
           <div class="componentsData" v-if="relOf">
-              <s1zhiLiangMuBiao :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s1zhiLiangMuBiao :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw" :mubiao = "quality[0].val"
               v-if="showAll || showComponents[1]" :data = "getS1renwu()"/>
-              <s1jianCe :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s1jianCe :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw" :mubiao = "quality[1].val"
               v-if="showAll || showComponents[5]" :data = "getS2jianCe()" />
-              <s2manYiDu :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s2manYiDu :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw" :mubiao = "quality[2].val"
               v-if="showAll || showComponents[7]"  :data = "getS2manYiDu()"/>
-              <s3tousu :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s3tousu :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw" :mubiao = "quality[3].val"
               v-if="showAll || showComponents[6]" :data = "getS3tousu()"/>
-              <s13shengWu :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s13shengWu :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw" :mubiao = "quality[4].val"
               v-if="showAll || showComponents[17]" :data = "getS3tousu()"/>
               <div class="clear"></div>
           </div>
         </div>
-        <div class="congxiebox7" style="display:inline-block;width:49%">
+        <div class="congxiebox7" style="display:inline-block;width:49%" v-if="pageOT">
           <div class="ttitle" style="margin:2% 0;text-align: center;">人员培训与管理</div>
           <div class="componentsData" v-if="relOf">
-              <s4renYuanPeiXun :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
+              <s4renYuanPeiXun :height="'290%'" :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[8]" :data = "getS4renYuanPeiXun()"/>
-              <s5renYuanJianDu :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
+              <s5renYuanJianDu :height="'290%'" :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[9]" :data = "getS5renYuanJianDu()"/>
               <!-- <div class="clear"></div> -->
 
           </div>
         </div>
-        <div class="congxiebox7" style="display:inline-block;width:49%;float:right;">
+        <div class="congxiebox7" style="display:inline-block;width:49%;float:right;" v-if="pageOT">
           <div class="ttitle" style="margin:2% 0;text-align: center;">设备维保</div>
           <div class="componentsData" v-if="relOf">
-              <s7sheBeiJiaoZhun :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
+              <s7sheBeiJiaoZhun :height="'290%'" :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[12]" :data = "getJiaoYanObjNum()"/>
-              <s8sheBeiHeCha :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
+              <s8sheBeiHeCha :height="'290%'" :width="static=='row' ? '50%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[11]" :data = "gethechaObjNum()"/>
               <!-- <div class="clear"></div> -->
 
           </div>
         </div>
-        <div class="congxiebox7" >
+        <div class="congxiebox7" v-if="!pageOT">
 
           <div class="ttitle" style="text-align: center;">标准物质</div>
           <div class="componentsData" v-if="relOf">
-              <s11biaoZhunWu :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
+              <s11biaoZhunWu :height="'290%'" :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[15]" :data = "getbiaozhunObjNum()"/>
-              <s16bzJunZhu :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
+              <s16bzJunZhu :height="'290%'" :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[20]" :data = "getbzJunZhujNum()"/>
-              <s17bzXiBao :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
+              <s17bzXiBao :height="'290%'" :width="static=='row' ? '33%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[21]" :data = "getbzXiBaoObjNum()"/>
               <div class="clear"></div>
           </div>
         </div>
-        <div class="congxiebox7" >
+        <div class="congxiebox7" v-if="!pageOT">
 
-        <div class="ttitle" style="text-align: center;">质量管理</div>
+          <div class="ttitle" style="text-align: center;">质量管理</div>
           <div class="componentsData" v-if="relOf">
-              <s9neiBuZhiLiang :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s9neiBuZhiLiang :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[13]" :data = "getS9neiBuZhiLiang()"/>
-              <s10waiBuNengLi :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s10waiBuNengLi :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[14]" :data = "getnengtliObjNum()"/>
-              <s14bufuhexiang :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s14bufuhexiang :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[18]" :data = "getS14bufuhexiang()"/>
-              <s15tousu :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s15tousu :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[19]" :data = "getS3tousu()"/>
-              <s12fengXian :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
+              <s12fengXian :height="'290%'" :width="static=='row' ? '20%': '100%'" :colorw = "colorw"
               v-if="showAll || showComponents[16]" :data = "getS12fengXian()"/>
               <div class="clear"></div>
 
           </div>
         </div>
-        <!-- <div class="ttitle">风险控制</div>
-        <div class="componentsData" v-if="relOf">
-            <s12fengXian :width="static=='row' ? '25%': '100%'"
-            v-if="showAll || showComponents[16]" :data = "getS12fengXian()"/>
-            <div class="clear"></div>
-
-        </div> -->
        
 
 
@@ -237,6 +245,7 @@
   import { DBData ,getConfig,getJiaoYanObj, gethechaObj, getnengliObj, getbiaozhunObj,getbiaozhunTObj,getbzJunZhuObj,getbzJunZhuTObj,getbzXiBaoObj,getbzXiBaoTObj} from './js/selectDB.js'
   import sendDatas from './sendDatas.js'
   import repostCurd from '@/business/platform/form/utils/custom/joinCURD.js'
+import * as forEach from 'lodash/forEach'
   export default {
     components:{
       headerDecoration,
@@ -288,6 +297,12 @@
         this.dataScope.push(this.endDate)
       }
       this.getConfigData() //获取统计的配置
+      this.getqualityData()
+
+      this.timer1 = setInterval(()=>{
+        this.pageOT = !this.pageOT
+        console.log(this.pageOT)
+      },300000)
     },
     data() {
       return {
@@ -309,14 +324,26 @@
         selectBeg: '',
         showAll:true,
         timer: '',
+        timer1: '',
         showComponents:{},//显示全部统计子组件 , 若有新增,往后累计。 供动态表单进行查阅使用。
         dataScope: [],
-        colorw: '#fff'
+        colorw: '#fff',
+        pageOT: true,
+        quality:[
+          {name: '任务及时完成率' ,val: ''},
+          {name: '检测报告差错率' ,val: ''},
+          {name: '客户满意度' ,val: ''},
+          {name: '投诉率' ,val: ''},
+          {name: '投诉处理及时率' ,val: ''}
+        ]
       }
     },
      beforeDestroy() {
-          clearInterval(this.timer);
-        },
+      if(screenfull.isFullscreen){
+        screenfull.toggle()
+      }
+      clearInterval(this.timer);
+    },
     methods: {
       /* 判断是否统计子组件中传递过来的,是否需要隐藏。若需要则进行隐藏的遍历  */
       isShowComponents(){
@@ -325,6 +352,20 @@
             this.showComponents[this.shows[i]] = true
           }
       },
+      getqualityData() {
+        let sql='select xiang_mu_ming_,mu_biao_zhi_ from t_zlmbz'
+        repostCurd('sql', sql).then(response => {
+          let a = response.variables.data //结果一定存在第0个,因为只有一条数据
+           this.quality.forEach((t,i)=>{
+            a.forEach(e => {
+              if (t.name === e.xiang_mu_ming_) {
+                t.val = e.mu_biao_zhi_
+              }
+            });
+          })
+          console.log(this.quality,'546546654gsdf')
+        })
+      },
       /* 查询统计配置中的完成率*/
       getConfigData() {
         repostCurd('sql', getConfig()).then(response => {
@@ -419,6 +460,8 @@
         // if ((this.selectEnd != this.endDate || this.selectBeg != this.BeginDate) && this.endDate != this.BeginDate && this.endDate > this.BeginDate) {
           // this.getData(this.BeginDate, this.endDate, false, this.dataScope)
           this.getConfigData()
+          this.getqualityData()
+
           // this.$forceUpdate();
 
           // this.selectEnd = this.endDate
@@ -494,6 +537,7 @@
       },
       goBack(){
         this.$router.back(-1)
+        clearInterval(this.timer1);
       }
     },
     created() {
@@ -503,11 +547,6 @@
       this.allView()
         
       }
-    },
-    beforeDestroy() {
-      if(screenfull.isFullscreen){
-        screenfull.toggle()
-        }
     }
   }
 </script>
@@ -545,6 +584,9 @@
 
   //  }
   }
+  .el-scrollbar__wrap{
+    overflow-x: hidden;
+  }
   .goBackButton{
     width: 2%;
     position: absolute;
@@ -594,6 +636,10 @@
       font-size: 12px;
     }
   }
+  .mubiaozhi{
+    text-align: center;
+    margin-top: 3%;
+  }
 </style>
 <style lang="scss">
 .el-year-table .today .cell {

+ 5 - 0
src/views/statistics/item/s13shengWu.vue

@@ -8,6 +8,7 @@
         @close = "close"
         :title="title"
         :data="data"
+        :mubiao="mubiao"
       />
     </div>
   </div>
@@ -44,6 +45,10 @@
       colorw:{
         type:String,
         default:'true'
+      },
+      mubiao:{
+        type:String,
+        default:''
       }
     },
     data () {

+ 5 - 1
src/views/statistics/item/s1jianCe.vue

@@ -8,6 +8,7 @@
         @close = "close"
         :title="title"
         :data="data"
+        :mubiao="mubiao"
       />
     </div>
   </div>
@@ -45,6 +46,10 @@
       colorw:{
         type:String,
         default:'true'
+      },
+      mubiao:{
+        type:String,
+        default:''
       }
     },
     data () {
@@ -69,7 +74,6 @@
       drawLine(){
         var echarts = require('echarts');
         let s1jianCe = echarts.init(document.getElementById(this.id))
-
         //  let data = [];
 
         //  data.push(Number(this.data.t_gdyrqcwt5Begin.number<0?0-this.data.t_gdyrqcwt5Begin.number:this.data.t_gdyrqcwt5Begin.number)*100)

+ 5 - 0
src/views/statistics/item/s1zhiLiangMuBiao.vue

@@ -9,6 +9,7 @@
         @close = "close"
         :title="title"
         :data="data"
+        :mubiao="mubiao"
       />
     </div>
   </div>
@@ -46,6 +47,10 @@
       colorw:{
         type:String,
         default:'true'
+      },
+      mubiao:{
+        type:String,
+        default:''
       }
     },
     data () {

+ 5 - 0
src/views/statistics/item/s2manYiDu.vue

@@ -8,6 +8,7 @@
         @close = "close"
         :title="title"
         :data="data"
+        :mubiao="mubiao"
       />
     </div>
   </div>
@@ -46,6 +47,10 @@
       colorw:{
         type:String,
         default:'true'
+      },
+      mubiao:{
+        type:String,
+        default:''
       }
     },
     data () {

+ 5 - 0
src/views/statistics/item/s3tousu.vue

@@ -8,6 +8,7 @@
         @close = "close"
         :title="title"
         :data="data"
+        :mubiao="mubiao"
       />
     </div>
   </div>
@@ -44,6 +45,10 @@
       colorw:{
         type:String,
         default:'true'
+      },
+      mubiao:{
+        type:String,
+        default:''
       }
     },
     data () {

+ 7 - 0
src/views/statistics/properties/s13shengWuPro.vue

@@ -42,6 +42,9 @@
               有效投诉总次数 :<el-tag>{{data.t_complaintNum.numberAll[0]}} 次</el-tag>
               <br>
               投诉回复及时率 :<el-tag>{{data.t_complaintNum.res[0]}} %</el-tag>
+              <br>
+              当前目标值 :<el-tag>{{mubiao}}</el-tag>
+              <br>
             <br>
               <!-- <div v-for="(item,i) in data.t_complaintNum.number" :key="i">
                   <el-divider content-position="left">{{data.t_complaintNum.date[i]}} 年度</el-divider>
@@ -76,6 +79,10 @@
         height:{
           type:String,
           default:window.screen.height * 0.5 +'px'
+        },
+        mubiao:{
+          type:String,
+          default:''
         }
       },
       beforeCreate: function () {

+ 6 - 0
src/views/statistics/properties/s1jianCePro.vue

@@ -44,6 +44,8 @@
             <br>
             检测报告差错率 :<el-tag>{{data.t_mjjcbgNum.res[0]}} 次</el-tag>
             <br>
+            当前目标值 :<el-tag>{{mubiao}}</el-tag>
+            <br>
           <!-- <el-divider content-position="left">{{data.t_gdyrqcwtBegin.date}} 年度</el-divider>
             委托检测数 :<el-tag>{{data.t_gdyrqcwtBegin.number}} 次</el-tag>
             <br>
@@ -105,6 +107,10 @@
         height:{
           type:String,
           default:window.screen.height * 0.50 +'px'
+        },
+        mubiao:{
+          type:String,
+          default:''
         }
         
       },

+ 6 - 0
src/views/statistics/properties/s1zhiLiangMuBiaoPro.vue

@@ -42,6 +42,8 @@
                 <br>
                 任务完成率 :<el-tag>{{data.t_jchzbNum.res[0]}} %</el-tag>
                 <br>
+                当前目标值 :<el-tag>{{mubiao}}</el-tag>
+                <br>
               </div>
               <!-- <div class="dataCont" style="font-size: 14px;">
               <el-divider content-position="left">2021 年度</el-divider>
@@ -90,6 +92,10 @@
         height:{
           type:String,
           default:window.screen.height * 0.5 +'px'
+        },
+        mubiao:{
+          type:String,
+          default:''
         }
       },
       beforeCreate: function () {

+ 6 - 0
src/views/statistics/properties/s2manYiDuPro.vue

@@ -44,6 +44,8 @@
               <br>
               客户满意度 :<el-tag>{{data.t_khmydtjbNum.res[0]}} %</el-tag>
               <br>
+              当前目标值 :<el-tag>{{mubiao}}</el-tag>
+              <br>
            </div>
            <!-- <div v-for="(item,i) in data.t_khmydtjbNum.date" :key="i">
               <el-divider content-position="left">{{data.t_khmydtjbNum.date[i]}} 年度</el-divider>
@@ -78,6 +80,10 @@
         height:{
           type:String,
           default:window.screen.height * 0.5 +'px'
+        },
+        mubiao:{
+          type:String,
+          default:''
         }
       },
       beforeCreate: function () {

+ 7 - 0
src/views/statistics/properties/s3tousuPro.vue

@@ -42,6 +42,9 @@
               委托总数次数 :<el-tag>{{data.t_complaintNum.numberAll[0]}} 次</el-tag>
               <br>
               客户投诉率 :<el-tag>{{data.t_complaintNum.res[0]}} %</el-tag>
+              <br>
+              当前目标值 :<el-tag>{{mubiao}}</el-tag>
+              <br>
             <br>
               <!-- <div v-for="(item,i) in data.t_complaintNum.number" :key="i">
                   <el-divider content-position="left">{{data.t_complaintNum.date[i]}} 年度</el-divider>
@@ -76,6 +79,10 @@
         height:{
           type:String,
           default:window.screen.height * 0.5 +'px'
+        },
+        mubiao:{
+          type:String,
+          default:''
         }
       },
       beforeCreate: function () {

+ 110 - 12
src/views/system/jbdHome/yangPinShuJu/EntrustNumber.vue

@@ -132,29 +132,59 @@ export default {
       let sql12 = "select a.shou_yang_ri_qi_, a.yang_pin_shu_lian FROM (select t_lhypdjb.* from t_lhypdjb LEFT JOIN t_lhwtsqb on t_lhypdjb.wei_tuo_dan_hao_ = t_lhwtsqb.wei_tuo_bian_hao_ where t_lhwtsqb.wei_tuo_lei_xing_ != '客户委托') as a WHERE YEAR(a.shou_yang_ri_qi_)='"+this.yearA+"' and MONTH(a.shou_yang_ri_qi_) = '"+this.monthA+"'"
       let sql2 ="select shou_yang_ri_qi_,yang_pin_shu_lian FROM t_lhypdjb WHERE yan_shou_jie_guo_ = '残缺'  AND shou_yang_ri_qi_ LIKE '"+this.NowTime+'%'+"'"
       let sql3 = "select liu_yang_ri_qi_,liu_yang_shu_lian FROM (SELECT * FROM t_lhypdjb ) a WHERE   a.shi_fou_liu_yang_ != '否' AND shou_yang_ri_qi_ LIKE '"+this.NowTime+'%'+"'"
+      let sql4 = "select yang_pin_bian_hao,DATE_FORMAT(create_time_,'%Y-%m-%d') AS detectionTime FROM t_lhjcbgb WHERE yang_pin_bian_hao != ''  AND create_time_ LIKE '"+this.NowTime+'%'+"' GROUP BY yang_pin_bian_hao"
+      let sql5="select yang_pin_bian_hao,DATE_FORMAT(MIN(create_time_),'%Y-%m-%d') AS detectionTime FROM t_jchzb WHERE jian_ce_zhuang_ta != '已完成' AND yang_pin_bian_hao !=''  AND create_time_ LIKE '"+this.NowTime+'%'+"' GROUP BY yang_pin_bian_hao"
       Promise.all([
         curdPost('sql', sql1),
         curdPost('sql', sql12),
         curdPost('sql', sql2),
         curdPost('sql', sql3),
-      ]).then(([ res1, res12, res2, res3]) => {
+        curdPost('sql', sql4),
+        curdPost('sql', sql5),
+      ]).then(([ res1, res12, res2, res3, res4, res5]) => {
         let data1 = res1.variables.data
         let data12 = res12.variables.data
         let data2 = res2.variables.data
         let data3 = res3.variables.data
-        // console.log('返回的全部数据',data1,data2)
-        console.log('返回的全部数据',data1,data2,data3)
+        let data4 = res4.variables.data
+        let data5 = res5.variables.data
+
+        
+
         const receivedData = this.dealingData(data1,dayNum)
         const receivedData2 = this.dealingData(data12,dayNum)
         const unqualifiedData = this.dealingData(data2,dayNum)
         const retentionData = this.dealingRetentionData(data3,dayNum)
-        console.log('xxxxxxxxx方法返回的数据1   -------',receivedData2,sql1)
+        const untestedSample = this.dealingData1(data4,dayNum)
+        const completedSample = this.dealingData1(data5,dayNum)
+        console.log('xxxxxxxxx方法返回的数据1   -------',untestedSample,completedSample,data3,sql3)
         // console.log('xxxxxxxxx方法返回的数据2   -------',unqualifiedData)
         // console.log('xxxxxxxxx方法返回的数据3   -------',retentionData)
         //三组数据处理完毕之后,传给图表进行渲染  (月份天数数组,已收样,不合格,留样)
-        this.entrustNumberInit(this.days,receivedData,receivedData2,unqualifiedData,retentionData)
+        this.entrustNumberInit(this.days,receivedData,receivedData2,unqualifiedData,retentionData,untestedSample,completedSample)
       })
     },
+    //处理数据
+    dealingData1(data,dayNum){
+      let result = data.reduce((obj, item) => {
+          let find = obj.find(i => i.detectionTime === item.detectionTime);
+          let  CheckedArray= {
+            detectionTime:item.detectionTime,
+            count: 1
+          };
+          find ? find.count++ : obj.push(CheckedArray);
+          return obj;
+        }, []);
+         console.log('12345678',result);
+        this.filledNum = Array(dayNum).fill(0)
+        //遍历拿到的数组,截取出月份对应的 // 2022-11-01
+        result.forEach(item =>{
+          let key = item.detectionTime.slice(8,10) < 10 ?item.detectionTime.slice(9,10) :item.detectionTime.slice(8,10)
+          let value =parseInt(item.count)
+          this.filledNum.splice(key - 1,1,value)
+        })
+        return this.filledNum;
+    },
     //处理sql查询出来的数据
     dealingData(data,dayNum){
       console.log(data,'data1')
@@ -176,11 +206,29 @@ export default {
         this.filledNum.splice(key - 1,1,value)
       })
       //返回处理好的数量数组
-      console.log(this.filledNum,'90900990',data)
+      // console.log(this.filledNum,'90900990',data)
       return this.filledNum;
     },
     //处理留样数据
     dealingRetentionData(data,dayNum){
+      for (let ii in data) {
+          let num3 = data[ii].liu_yang_shu_lian.match(/×+\d+(\.\d+)?/g)
+          // console.log(num3,'768u76mudg')
+          if(num3 == null){
+            data[ii].liu_yang_shu_lian = 0
+          }else{
+            if(num3.length===1){
+              data[ii].liu_yang_shu_lian = Number(num3[0].replace(/[^\d]/g, ""))
+              // console.log(Number(num3[0].replace(/[^\d]/g, "")),num3[0])
+            }else{
+              data[ii].liu_yang_shu_lian=num3.reduce((a, b) => {
+                let aa=Number(a.replace(/[^\d]/g, ""))
+                let bb=Number(b.replace(/[^\d]/g, ""))
+                return aa + bb
+              })
+            }
+          }
+        }
       let newArray = data.reduce((total, cur, index) => {
           let hasValue = total.findIndex(current => {
             return current.liu_yang_ri_qi_ === cur.liu_yang_ri_qi_;
@@ -189,21 +237,23 @@ export default {
           hasValue !== -1 && (total[hasValue].liu_yang_shu_lian = Number(total[hasValue].liu_yang_shu_lian) + Number(cur.liu_yang_shu_lian));
           return total;
       }, []);
-        //console.log('日期相同数量相加 处理结果',newArray);
+        console.log('日期相同数量相加 处理结果',newArray);
         //创建一个长度为当前月份天数的数组
         this.filledNum = Array(dayNum).fill(0)
         //遍历拿到的数组,截取出月份对应的 // 2022-11-01
         newArray.forEach(item =>{
           let key = item.liu_yang_ri_qi_.slice(8,10) < 10 ?item.liu_yang_ri_qi_.slice(9,10) :item.liu_yang_ri_qi_.slice(8,10)
           let value =Number(item.liu_yang_shu_lian)
+          console.log(key,value,this.filledNum)
           this.filledNum.splice(key - 1,1,value)
         })
         //返回处理好的数量数组
+        console.log(this.filledNum,'89o9009jkikjkj')
         return this.filledNum;
     },
   
     //委托样品图表
-    entrustNumberInit(dayArray,receivedData,receivedData2,unqualifiedData,retentionData){
+    entrustNumberInit(dayArray,receivedData,receivedData2,unqualifiedData,retentionData,untestedSample,completedSample){
       // console.log('拿到日期数组',dayArray)
       console.log(receivedData,receivedData2,unqualifiedData,retentionData,'we12e12312312312')
       this.entrustNumber = echarts.init(this.$refs.Number_refs);
@@ -274,7 +324,10 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#fff'
+                color:'#fff',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
               },
               //柱子的颜色
               itemStyle:{
@@ -290,7 +343,10 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#fff'
+                color:'#fff',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
               },
               //柱子的颜色
               itemStyle:{
@@ -305,7 +361,10 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#f52aa0'
+                color:'#f52aa0',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
               },
               //柱子的颜色
               itemStyle:{
@@ -320,7 +379,10 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#7FFF00'
+                color:'#7FFF00',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
               },
               //柱子的颜色
               itemStyle:{
@@ -329,6 +391,42 @@ export default {
               },
               data:retentionData 
             },
+            {
+              type: 'line',
+              name:'已检测样品',
+              label: {
+                show: true,
+                position: 'top',
+                color:'#2E8B57',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
+              },
+              //柱子的颜色
+              itemStyle:{
+                show:true,
+                color:'rgba(46,139,87,0.4)',
+              },
+              data:untestedSample 
+            },
+            {
+              type: 'line',
+              name:'未检测样品',
+              label: {
+                show: true,
+                position: 'top',
+                color:'#FF33FF',
+                formatter: function(params) {
+                  if (params.value > 0) {return params.value;}else if(params.value == 0){return ''}
+                }
+              },
+              //柱子的颜色
+              itemStyle:{
+                show:true,
+                color:'rgba(255,51,255,0.4)',
+              },
+              data:completedSample 
+            }
           ],
       }
       this.entrustNumber.setOption(entrustNumberOption)

+ 5 - 5
src/views/system/jbdHome/yangPinShuJu/index.vue

@@ -13,7 +13,7 @@
             line-height: 2.825rem;
             text-align:center;
             position: absolute;
-            left: 4%;
+            left: 11%;
             top:3.8%;" >
             <el-date-picker
               class="chooseMonth"
@@ -35,7 +35,7 @@
             line-height: 2.825rem;
             text-align:center;
             position: absolute;
-            right: 3%;
+            right: 11%;
             top:4%;" >
             <dv-border-box-8>返回</dv-border-box-8>
           </div>
@@ -73,7 +73,7 @@
             <div class="monthlyS" ref="MonthlyStatus_refs"><sampleReceived  :NowTime1="NowTime1"/></div>
             <!-- <div class="annualS" ref="AnnualStatus_refs"><annualStatus :NowTime1="NowTime1"/></div> -->
             <div class="annualS" ref="AnnualStatus_refs"><waitingInspection :NowTime1="NowTime1"/></div>
-            <div class="monthlyN" ref="MonthlyNumber_refs"><monthlyNumber  :NowTime1="NowTime1"/></div>
+            <!-- <div class="monthlyN" ref="MonthlyNumber_refs"><monthlyNumber  :NowTime1="NowTime1"/></div> -->
           </div>
         </div>
         
@@ -251,7 +251,7 @@ export default {
           justify-content:space-between;
           // border: 1px solid rgb(142, 190, 30);
           .monthlyS{
-            width: 31%;
+            width: 49.5%;
             height: 100%;
             // background-color: rgb(12, 103, 131);
           }
@@ -263,7 +263,7 @@ export default {
             // background-color: rgb(171, 163, 204);
           }
           .annualS{
-            width: 31%;
+            width: 49.5%;
             height: 100%;
             margin-left: 10px;
             // background-color: rgb(12, 103, 131);

+ 1 - 1
src/views/system/jbdHome/yangPinShuJu/sampleReceived.vue

@@ -33,7 +33,7 @@ import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
                     let arr = res.variables.data
                     for (var i = 0; i < arr.length; i++) {
                         let changeArr = [arr[i].yang_pin_bian_hao,arr[i].yang_pin_ming_che,arr[i].wei_tuo_dan_hao_,arr[i].wei_tuo_dan_wei_,arr[i].wei_tuo_ri_qi_]
-                        console.log(changeArr,this.tableData.data,'arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr')
+                        // console.log(changeArr,this.tableData.data,'arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr')
                         this.tableData.data.push(changeArr)
                     }
                 })

+ 1 - 1
src/views/system/jbdHome/yangPinShuJu/waitingInspection.vue

@@ -33,7 +33,7 @@ import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
                     let arr = res.variables.data
                     for (var i = 0; i < arr.length; i++) {
                         let changeArr = [arr[i].yang_ben_bian_hao,arr[i].yang_ben_ming_che,arr[i].wei_tuo_dan_hao_,arr[i].wei_tuo_dan_wei_,arr[i].wei_tuo_ri_qi_]
-                        console.log(changeArr,this.tableData.data,'arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr')
+                        // console.log(changeArr,this.tableData.data,'arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr')
                         this.tableData.data.push(changeArr)
                     }
                 })

+ 22 - 15
src/views/system/jbdScan/goods/deviceFailureTag.vue

@@ -17,8 +17,8 @@
                <div class="All">
                 <div class="tagBox">
                   <div class="lh">
-                    <div>设备名称:</div>
-                    <div>{{ item1.name }}</div>
+                    <div class="qianZhi zuoJuZhong">设备名称:</div>
+                    <div class="zuoJuZhong">{{ item1.name }}</div>
                   </div>
                   <div class="la">
                     <div class="lh">
@@ -27,8 +27,8 @@
                     </div>
                   </div>
                   <div class="lh">
-                    <div>存放地点:</div>
-                    <div>{{ item1.local }}</div>
+                    <div class="qianZhi zuoJuZhong">存放地点:</div>
+                    <div class="zuoJuZhong">{{ item1.local }}</div>
                   </div>
                   <div class="lh">
                     <div>启用日期:</div>
@@ -41,12 +41,13 @@
                   </div>
                   <div class="lh">
                     <div>使用科室:</div>
-                    <div>{{ item1.condition }}</div>
+                    <div>细胞质量检测实验室</div>
+                    <!-- <div>{{ item1.condition }}</div> -->
                   </div>
 
                   <div class="lh">
-                    <div>固定资产编号:</div>
-                    <div>{{ item1.assets }}</div>
+                    <div  class="qianZhi zuoJuZhong">固定资产编号:</div>
+                    <div class="zuoJuZhong">{{ item1.assets }}</div>
                   </div>
                   <div class="lh">
                     <div>设备状态:</div>
@@ -54,7 +55,7 @@
                   </div>
                  
                   <div class="ewm">
-                    <vue-barcode :value="item1.serial" :width=2 :height=25 :fontSize=15 :margin=8 :displayValue="false"></vue-barcode>
+                    <vue-barcode :value="item1.serial" :width=1.5 :height=15 :fontSize=15 :margin="0" :displayValue="false"></vue-barcode>
                   </div>
 
                   <!-- <div
@@ -213,11 +214,11 @@ export default {
 //   background-color: #fff;
 // }
 .tagBox{
-  width: 300px;
-  height: 240px;
+  width: 231px; //300
+//   height: 240px;
   font-size: 14px;
-  padding: 10px;
-  margin: 0 auto 20px;
+  padding: 2px;
+  margin: 10px auto 10px;
   position: relative;
   border: 1px solid #000;
   border-radius: 4px;
@@ -245,15 +246,21 @@ export default {
   display: flex;
   align-items: center;
 }
+.qianZhi{
+    white-space: nowrap
+}
+
+.zuoJuZhong{
+    text-align: left;
+}
 
 .lh {
   // line-height: auto;
-  font-size: 18px;  //16
+  font-size: 12px;  //16
   color: #0a0a0a;
   display: flex;
   align-items: center;
-  // padding: 4px;
-
+  padding: 1px;
 }
 .All{
   text-align: center

+ 13 - 11
src/views/system/jbdScan/goods/deviceTag.vue

@@ -30,10 +30,10 @@
                     <div>规格型号:</div>
                     <div>{{ item1.specifications }}</div>
                   </div>
-                  <div class="lh">
+                  <!-- <div class="lh">
                     <div>存放地点:</div>
                     <div>{{ item1.local }}</div>
-                  </div>
+                  </div> -->
                   <div class="lh">
                     <div>启用日期:</div>
                     <div>{{ item1.time }}</div>
@@ -45,7 +45,8 @@
                   </div>
                   <div class="lh">
                     <div>使用科室:</div>
-                    <div>{{ item1.condition }}</div>
+                    <div>细胞质量检测实验室</div>
+                    <!-- <div>{{ item1.condition }}</div> -->
                   </div>
                   <div class="lh">
                     <div>固定资产编号:</div>
@@ -59,7 +60,7 @@
                   </div>
                  
                   <div class="ewm">
-                    <vue-barcode :value="item1.serial" :width=2 :height=25 :fontSize=15 :margin=8 :displayValue="false"></vue-barcode>
+                    <vue-barcode :value="item1.serial" :width=1.5 :height=15  :margin="0" :displayValue="false"></vue-barcode>
                   </div>
 
                   <!-- <div
@@ -222,13 +223,14 @@ export default {
 // }
 
 .tagBox{
-  width: 300px;
-  height: 240px;
-  font-size: 14px;
-  padding: 10px;
-  margin: 0 auto 20px;
+  width: 231px; //300
+//   height: 240px;
   position: relative;
   border: 1px solid #000;
+//   font-size: 14px;
+  padding: 2px;
+  display: inline-block;
+  margin: 10px auto 10px;
   border-radius: 4px;
 }
 .ewm{
@@ -257,10 +259,10 @@ export default {
 
 .lh {
   // line-height: auto;
-  font-size: 18px;  //16
+  font-size: 12px;  //16
   display: flex;
   align-items: center;
-  // padding: 4px;
+  padding: 1px;
 
 }
 </style>

+ 14 - 9
src/views/system/jbdScan/goods/deviceVerificationTag.vue

@@ -17,7 +17,7 @@
                <div class="All">
                 <div class="tagBox">
                   <div class="lh">
-                    <div>设备名称:</div>
+                    <div class="qianZhi">设备名称:</div>
                     <div>{{ item1.name }}</div>
                   </div>
                   <div class="la">
@@ -44,16 +44,16 @@
                     <div>{{ item1.condition }}</div>
                   </div> -->
                   <div class="lh">
-                    <div>校准机构:</div>
-                    <div>{{ item1.jiGou }}</div>
+                    <div class="qianZhi">校准机构:</div>
+                    <div class="zuoJuZhong">{{ item1.jiGou }}</div>
                   </div>
                   <div class="lh">
                     <div>校准时间:</div>
                     <div>{{ item1.jiaoZhunTime }}</div>
                   </div>
                   <div class="lh">
-                    <div>修正值/修正因子:</div>
-                    <div>{{ item1.yinZi }}</div>
+                    <div class="qianZhi zuoJuZhong" style="width: 70px;">修正值&nbsp;&nbsp;&nbsp;:</div>
+                    <div class="zuoJuZhong">{{ item1.yinZi }}</div>
                   </div>
 
                   <!-- <div class="lh">
@@ -227,7 +227,7 @@ export default {
   width: 231px;   // 300  240
   // height: 283px;  // 180  150  94
   position: relative;
-  border: 2px solid #000000;
+  border: 1px solid #000000;
   padding: 2px;
   display: inline-block;
   // justify-content: space-around;
@@ -254,18 +254,23 @@ export default {
   background-color: #fff;
 }
 */
-
+.qianZhi{
+    white-space: nowrap
+}
 .la {
   display: flex;
   align-items: center;
 }
+.zuoJuZhong{
+    text-align: left;
+}
 
 .lh {
   // line-height: auto;
-  font-size: 18px;  //16
+  font-size: 12px;  //16
   display: flex;
   align-items: center;
-  // padding: 4px;
+  padding: 1px;
 
 }
 </style>

+ 22 - 16
src/views/system/jbdScan/goods/manualConfirmation.vue

@@ -73,7 +73,7 @@
                             <el-form-item label="样品类型(一)">
                               <!-- <el-input v-model="item.yang_pin_lei_xing " ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_xing" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_xing" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -90,7 +90,7 @@
                             <el-form-item label="样品运输条件(一)">
                               <!-- <el-input v-model="item.yang_ben_yun_shu_" ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_ben_yun_shu_" placeholder="请选择">
+                                <el-select v-model="item.yang_ben_yun_shu_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -105,7 +105,7 @@
                           
                           <el-col :span="6">
                             <el-form-item label="样品数量(一)">
-                              <el-input v-model="item.shu_liang_"></el-input>
+                              <el-input v-model="item.shu_liang_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           
@@ -113,7 +113,7 @@
                             <el-form-item label="样品规格(一)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_"></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -157,7 +157,7 @@
                             <el-form-item label="样品类型(二)" >
                               <!-- <el-input v-model="item.yang_pin_lei_er_"   ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_er_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_er_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -173,7 +173,7 @@
                             <el-form-item label="样品运输条件(二)">
                               <!-- <el-input v-model="item.yang_pin_yun_shu_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_shu_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_shu_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -187,14 +187,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(二)" >
-                              <el-input v-model="item.shu_liang_er_"  ></el-input>
+                              <el-input v-model="item.shu_liang_er_"  @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(二)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_e"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_e" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_e" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -237,7 +237,7 @@
                             <el-form-item label="样品类型(三)" >
                               <!-- <el-input v-model="item.yang_pin_lei_san_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_san_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_san_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -253,7 +253,7 @@
                             <el-form-item label="样品运输条件(三)">
                               <!-- <el-input v-model="item.yang_pin_yun_san"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_san" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_san" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -267,14 +267,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(三)">
-                              <el-input v-model="item.shu_liang_san_"  ></el-input>
+                              <el-input v-model="item.shu_liang_san_"  @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(三)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_s"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_s" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_s" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -317,7 +317,7 @@
                             <el-form-item label="样品类型(四)">
                               <!-- <el-input v-model="item.yang_pin_lei_si_"   ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -333,7 +333,7 @@
                             <el-form-item label="样品运输条件(四)">
                               <!-- <el-input v-model="item.yang_pin_yun_si_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -347,14 +347,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(四)">
-                              <el-input v-model="item.shu_liang_si_"  ></el-input>
+                              <el-input v-model="item.shu_liang_si_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(四)">
                               <!-- <el-input v-model="item.yang_pin_gui_si_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -787,6 +787,12 @@ import * as dayjs from 'dayjs'
       this.listData[index].xiao_hui_ri_qi_ = itemData
       this.listData[index].liu_yang_qi_xian = val
       this.flag = true
+    },
+    changeShuLiang(index){
+        let item = this.listData[index]
+        let total = parseInt(item.shu_liang_ || 0) + parseInt(item.shu_liang_er_ || 0) + parseInt(item.shu_liang_san_ || 0) + parseInt(item.shu_liang_si_ || 0)
+        item.yang_pin_zong_shu = total
+        item.jie_yang_shu_lian = total
     }
   }
 

+ 22 - 16
src/views/system/jbdScan/goods/sampleConfirmation.vue

@@ -72,7 +72,7 @@
                             <el-form-item label="样品类型(一)">
                                 <!-- <el-input v-model="item.yang_pin_lei_xing " ></el-input> -->
                                 <template slot-scope="scope">
-                                    <el-select v-model="item.yang_pin_lei_xing" placeholder="请选择">
+                                    <el-select v-model="item.yang_pin_lei_xing" placeholder="请选择" filterable allow-create>
                                     <el-option
                                         v-for="item in sampleTypes"
                                         :key = "item.value"
@@ -89,7 +89,7 @@
                             <el-form-item label="样品运输条件(一)">
                               <!-- <el-input v-model="item.yang_ben_yun_shu_" ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_ben_yun_shu_" placeholder="请选择">
+                                <el-select v-model="item.yang_ben_yun_shu_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -104,7 +104,7 @@
                           
                           <el-col :span="6">
                             <el-form-item label="样品数量(一)">
-                              <el-input v-model="item.shu_liang_" ></el-input>
+                              <el-input v-model="item.shu_liang_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           
@@ -112,7 +112,7 @@
                             <el-form-item label="样品规格(一)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_"></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -155,7 +155,7 @@
                             <el-form-item label="样品类型(二)">
                               <!-- <el-input v-model="item.yang_pin_lei_er_"   ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_er_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_er_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -171,7 +171,7 @@
                             <el-form-item label="样品运输条件(二)">
                               <!-- <el-input v-model="item.yang_pin_yun_shu_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_shu_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_shu_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -185,14 +185,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(二)">
-                              <el-input v-model="item.shu_liang_er_" ></el-input>
+                              <el-input v-model="item.shu_liang_er_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(二)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_e"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_e" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_e" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -235,7 +235,7 @@
                             <el-form-item label="样品类型(三)">
                               <!-- <el-input v-model="item.yang_pin_lei_san_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_san_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_san_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -251,7 +251,7 @@
                             <el-form-item label="样品运输条件(三)">
                               <!-- <el-input v-model="item.yang_pin_yun_san"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_san" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_san" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -265,14 +265,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(三)">
-                              <el-input v-model="item.shu_liang_san_" ></el-input>
+                              <el-input v-model="item.shu_liang_san_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(三)">
                               <!-- <el-input v-model="item.yang_pin_gui_ge_s"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_ge_s" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_ge_s" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -316,7 +316,7 @@
                             <el-form-item label="样品类型(四)">
                               <!-- <el-input v-model="item.yang_pin_lei_si_"   ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_lei_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_lei_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTypes"
                                     :key = "item.value"
@@ -332,7 +332,7 @@
                             <el-form-item label="样品运输条件(四)">
                               <!-- <el-input v-model="item.yang_pin_yun_si_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_yun_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_yun_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleTransportationConditions"
                                     :key = "item.value"
@@ -346,14 +346,14 @@
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品数量(四)">
-                              <el-input v-model="item.shu_liang_si_" ></el-input>
+                              <el-input v-model="item.shu_liang_si_" @change="changeShuLiang(index)"></el-input>
                             </el-form-item>
                           </el-col>
                           <el-col :span="6">
                             <el-form-item label="样品规格(四)">
                               <!-- <el-input v-model="item.yang_pin_gui_si_"  ></el-input> -->
                               <template slot-scope="scope">
-                                <el-select v-model="item.yang_pin_gui_si_" placeholder="请选择">
+                                <el-select v-model="item.yang_pin_gui_si_" placeholder="请选择" filterable allow-create>
                                 <el-option
                                     v-for="item in sampleSpecifications"
                                     :key = "item.value"
@@ -759,6 +759,12 @@ import * as dayjs from 'dayjs'
       this.listData[index].xiao_hui_ri_qi_ = itemData
       this.listData[index].liu_yang_qi_xian = val
       this.flag = true
+    },
+    changeShuLiang(index){
+        let item = this.listData[index]
+        let total = parseInt(item.shu_liang_ || 0) + parseInt(item.shu_liang_er_ || 0) + parseInt(item.shu_liang_san_ || 0) + parseInt(item.shu_liang_si_ || 0)
+        item.yang_pin_zong_shu = total
+        item.jie_yang_shu_lian = total
     }
   }
   }