Explorar el Código

Merge branch 'zhuf'

bzkf3 hace 2 años
padre
commit
c58bafceee

+ 3 - 3
src/components/FileUpload/index.vue

@@ -38,7 +38,7 @@ export default defineComponent({
         if (List_part.value !== undefined && List_part.value !== '' && List_part.value !== null) {
             FILE_LIST.value = List_part.value.split(';').map((part_url, idx) => ({
                 part_url,
-                url: window.globalVariables.api + part_url,
+                url: window.globalVariables.oss + part_url,
                 status: 1,
                 uid: Date.now() - idx,
                 name: part_url.split('/').pop()
@@ -49,7 +49,7 @@ export default defineComponent({
                 const [part_url, name] = item.split('|')
                 return ({
                     part_url,
-                    url: window.globalVariables.api + part_url,
+                    url: window.globalVariables.oss + part_url,
                     status: 1,
                     name,
                     uid: Date.now() - idx
@@ -96,7 +96,7 @@ export default defineComponent({
                     const { url: part_url, file_name } = data
                     const target = FILE_LIST.value.find(({ uid }) => uid === file.uid);
                     target.status = 1
-                    target.url = window.globalVariables.api + part_url
+                    target.url = window.globalVariables.oss + part_url
                     target.part_url = part_url
                     target.name = file_name
                     handleSuccess()

+ 33 - 11
src/components/Tinymce/index.vue

@@ -1,14 +1,10 @@
 <template>
-  <div
-    :class="{ fullscreen: fullscreen }"
-    class="tinymce-container"
-    :style="{ width: containerWidth }"
-  >
+  <div :class="{ fullscreen: fullscreen }" class="tinymce-container" :style="{ width: containerWidth }">
     <textarea :id="tinymceId" class="tinymce-textarea" />
-    <div class="editor-custom-btn-container">
-      <!-- <editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" /> -->
+    <!-- <div class="editor-custom-btn-container">
+      <editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" />
       <FileUpload :show-file-list="false" multiple @success="imageSuccessCBK" accept="image/*"></FileUpload>
-    </div>
+    </div> -->
   </div>
 </template>
 
@@ -59,7 +55,7 @@ import FileUpload from "@/components/FileUpload/index.vue";
 // window.globalVariables.apis = 'http://localhost:3001/'
 const baseURL = window.globalVariables.origin + '/tinymce'
 const tinymceCDN = baseURL + '/tinymce-all-in-one.js'
-
+import request from '@/utils/request';
 export default {
   name: 'Tinymce',
   components: {
@@ -195,7 +191,7 @@ export default {
         // it will try to keep these URLs intact
         // https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
         // https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
-        convert_urls: false
+        convert_urls: false,
         // 整合七牛上传
         // images_dataimg_filter(img) {
         //   setTimeout(() => {
@@ -229,6 +225,31 @@ export default {
         //     console.log(err);
         //   });
         // },
+        images_upload_handler: (blobInfo, success, failure, progress) => {
+          const file = blobInfo.blob();
+          return request({
+            url: 'upload/main/file',
+            timeout: 1000 * 60 * 2,
+            transformRequest: [function (data, headers) {
+              const formData = new FormData()
+              Object.keys(data).forEach(key => formData.append(key, data[key]))
+              return formData;
+            }],
+            data: {
+              filedata: file
+            },
+            timeout: 1000 * 60,
+            onUploadProgress(progressEvent) {
+              progress(~~(progressEvent.loaded / progressEvent.total * 100 | 0))
+            },
+          }).then(res => {
+            if (res.code === '1') {
+              return success(window.globalVariables.oss + '/' + (res.data.url))
+            } else {
+              return failure('出现未知问题,刷新页面')
+            }
+          })
+        },
       })
     },
     destroyTinymce() {
@@ -248,7 +269,8 @@ export default {
       window.tinymce.get(this.tinymceId).getContent()
     },
     imageSuccessCBK(arr) {
-      arr.forEach(v => window.tinymce.get(this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" >`))
+      console.log('arr :>> ', arr);
+      arr.forEach(v => window.tinymce.get(this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" />`))
     }
   }
 }

+ 2 - 2
src/views/mhgl/wjdc/edit/index.vue

@@ -167,7 +167,7 @@ export default {
       module_list: [
         { name: '单选框组', type: 'radio', icon: '' },
         { name: '多选框组', type: 'checkbox', icon: '' },
-        { name: '输入框', type: 'input', icon: '' },
+        { name: '自定义', type: 'input', icon: '' },
       ],
       // {  // 多选
       //   renderId: 12, val_12: [], label: '活动多选', type: 'checkbox',
@@ -337,7 +337,7 @@ export default {
         // this.form['val_' + renderId] = ''
       }
       if (type === 'input') {
-        insertData.label = "输入框"
+        insertData.label = "自定义"
         this.$set(this.form, 'val_' + renderId, '')
       }
       this.form_list.splice(index, 0, insertData)

+ 34 - 37
src/views/mhgl/wjdc/index.vue

@@ -4,14 +4,14 @@
       <el-header>
         <el-button type="primary" icon="el-icon-plus" @click="add_wjdc">新建问卷调查</el-button>
         <div>
-          <el-input placeholder="请输入搜索关键字" suffix-icon="el-icon-search" v-model="searchText"
-                    style="width: 200px;"></el-input>
+          <el-input placeholder="请输入搜索关键字" suffix-icon="el-icon-search" v-model="searchText" style="width: 200px;">
+          </el-input>
           <el-button type="primary" @click="tableParams.keyword = searchText">搜索</el-button>
         </div>
       </el-header>
       <el-main>
         <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="id" default-expand-all
-                  :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+          :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
           <el-table-column prop="hw_title" label="标题"></el-table-column>
           <el-table-column prop="hw_cjr" label="创建人"></el-table-column>
           <el-table-column prop="hw_cjsj" label="创建时间"></el-table-column>
@@ -29,53 +29,50 @@
         </el-table>
       </el-main>
       <el-footer style="text-align: right">
-        <el-pagination
-          background
-          hide-on-single-page
-          layout="prev, pager, next"
-          :page-size="tableParams.limit"
-          :total="total_rows"
-          @current-change="page => this.tableParams.page = page"></el-pagination>
+        <el-pagination background hide-on-single-page layout="prev, pager, next" :page-size="tableParams.limit"
+          :total="total_rows" @current-change="page => this.tableParams.page = page"></el-pagination>
       </el-footer>
     </el-container>
-    <el-dialog
-      :title="result.title"
-      :visible.sync="result.visible"
-      :destroy-on-close="true"
-      :close-on-click-modal="false"
-      width="800px"
-      center>
+    <el-dialog :title="result.title" :visible.sync="result.visible" :destroy-on-close="true"
+      :close-on-click-modal="false" width="800px" center>
 
-      <template v-if="result.data.length >0">
+      <template v-if="result.data.length > 0">
         <el-collapse accordion>
-          <el-collapse-item v-for="(item,index) in result.data" :key="index">
+          <el-collapse-item v-for="(item, index) in result.data" :key="index">
             <template slot="title">
               <strong>
                 第 {{ index + 1 }} 题:{{ item.label }}
-                {{ item.type === 'radio' ? '(单选)' : '(多选)' }}
+                {{ item.type === 'radio' ? '(单选)' : item.type === 'checkbox' ? '(多选)' : '(自定义)' }}
               </strong>
             </template>
-            <el-collapse accordion v-if="item.options">
-              <el-collapse-item v-for="(option,index) in item.options" :key="index"
-                                :disabled="!option.num || option.num*1<0">
-                <template slot="title">
-                  <label>{{ index + 1 }}、{{ option.label }}</label>
-                  (选择人数:{{ option.num || '暂无' }})
+            <div style="padding-left: 16px; border-left: 1px solid #c0c0c0;">
+              <el-collapse accordion>
+                <template v-if="item.options">
+                  <el-collapse-item v-for="(option, index) in item.options" :key="index"
+                    :disabled="!option.num || option.num * 1 < 0">
+                    <template slot="title">
+                      <label>{{ index + 1 }}、{{ option.label }}</label>
+                      (选择人数:{{ option.num || '暂无' }})
+                    </template>
+                    <div v-if="option.member && option.member.length > 0">
+                      {{
+                          option.member.reduce(function (str, item) {
+                            return str += item.user_realname + ','
+                          }, '')
+                      }}
+                    </div>
+                  </el-collapse-item>
                 </template>
-                <div v-if="option.member && option.member.length > 0">
-                  {{
-                    option.member.reduce(function (str, item) {
-                      return str += item.user_realname + ','
-                    }, '')
-                  }}
-                </div>
-              </el-collapse-item>
-            </el-collapse>
+                <template v-else>
+                  <el-empty></el-empty>
+                </template>
+              </el-collapse>
+            </div>
           </el-collapse-item>
         </el-collapse>
       </template>
       <span slot="footer" class="dialog-footer">
-        <el-button style="width: 30%" @click="result.visible = false" type="primary">关  闭</el-button>
+        <el-button style="width: 30%" @click="result.visible = false" type="primary">关 闭</el-button>
       </span>
     </el-dialog>
   </div>
@@ -149,7 +146,7 @@ export default {
       this.activeRowData = row
       this.$router.push({
         name: 'wjdc_edit',
-        params: {id: row.hw_id}
+        params: { id: row.hw_id }
       })
     },
     del(row) {

+ 47 - 25
src/views/xtgl/pfmb/edit/index.vue

@@ -50,7 +50,8 @@
                 <!-- 通用 -->
                 <template v-if="RootCate == '0'">
                     <el-table :data="tableData" tooltip-effect="dark" style="width: 100%">
-                        <el-table-column label="序号" width="100" prop="hp_id"></el-table-column>
+                        <el-table-column type="index" label="序号" width="50" />
+                        <!-- <el-table-column label="序号" width="100" prop="hp_id"></el-table-column> -->
                         <el-table-column label="名称" width="auto" prop="hp_name"></el-table-column>
                         <!-- <el-table-column label="占比(%)" width="100" prop="hp_zbsz"></el-table-column> -->
 
@@ -84,11 +85,12 @@
                     </el-table>
 
                     <el-dialog v-if="visibleRight" :visible.sync="visibleRight" width="360" append-to-body>
-                        <el-form :model="rightForm" label-width="120px">
-                            <el-form-item label="评分模板名称" required>
+                        <el-form :model="rightForm" label-width="120px" ref="rightFormRef">
+                            <el-form-item label="评分模板名称" :rules="{ required: true, message: '评分模板名称不能为空', tigger: 'submit' }"
+                                prop="hp_name">
                                 <el-input v-model="rightForm.hp_name"></el-input>
                             </el-form-item>
-                            <el-form-item label="评分方式">
+                            <el-form-item label="评分方式" prop="hp_pfzbsz">
                                 <el-radio-group v-model="rightForm.hp_pfzbsz">
                                     <el-radio label="1">最高分最低分设置</el-radio>
                                     <el-radio label="2">占比设置</el-radio>
@@ -96,17 +98,20 @@
                             </el-form-item>
 
                             <template v-if="rightForm.hp_pfzbsz === '1'">
-                                <el-form-item label="最高分" required>
+                                <el-form-item label="最高分" :rules="{ required: true, message: '最高分不能为空', tigger: 'submit' }"
+                                    prop="hp_dffw">
                                     <el-input-number :min="rightForm.hp_affw || -Infinity" controls-position="right"
                                         v-model="rightForm.hp_dffw"></el-input-number>
                                 </el-form-item>
-                                <el-form-item label="最低分" required>
+                                <el-form-item label="最低分" :rules="{ required: true, message: '最低分不能为空', tigger: 'submit' }"
+                                    prop="hp_affw">
                                     <el-input-number :max="rightForm.hp_dffw || Infinity" controls-position="right"
                                         v-model="rightForm.hp_affw"></el-input-number>
                                 </el-form-item>
                             </template>
                             <template v-if="rightForm.hp_pfzbsz === '2'">
-                                <el-form-item label="占比(%)" required>
+                                <el-form-item label="占比(%)" :rules="{ required: true, message: '占比不能为空', tigger: 'submit' }"
+                                    prop="hp_zbsz">
                                     <el-input-number controls-position="right" :min="0" :max="100"
                                         v-model="rightForm.hp_zbsz"></el-input-number>
                                 </el-form-item>
@@ -122,7 +127,8 @@
                 <!-- 精准 -->
                 <template v-if="RootCate == '1'">
                     <el-table :data="tableData" tooltip-effect="dark" style="width: 100%">
-                        <el-table-column label="序号" width="100" prop="hp_id"></el-table-column>
+                        <el-table-column type="index" label="序号" width="50" />
+                        <!-- <el-table-column label="序号" width="100" prop="hp_id"></el-table-column> -->
                         <el-table-column label="考试细则" width="auto" prop="hp_name"></el-table-column>
                         <!-- <el-table-column label="占比(%)" width="100" prop="hp_zbsz"></el-table-column> -->
 
@@ -156,19 +162,21 @@
                     </el-table>
 
                     <el-dialog v-if="visibleRight" :visible.sync="visibleRight" width="360" append-to-body>
-                        <el-form :model="rightForm" label-width="120px">
-                            <el-form-item label="考试细则" required>
+                        <el-form :model="rightForm" label-width="120px" ref="rightFormRef">
+                            <el-form-item label="考试细则" :rules="{ required: true, message: '考试细则不能为空', tigger: 'submit' }"
+                                prop="hp_name">
                                 <el-input v-model="rightForm.hp_name"></el-input>
                             </el-form-item>
-                            <el-form-item label="专家" required>
+                            <el-form-item label="专家" :rules="{ required: true, message: '专家不能为空', tigger: 'submit' }"
+                                prop="hp_zjsz">
                                 <!-- <el-input v-model="rightForm.hp_zjsz"></el-input> -->
-                                <remote-cascader-user v-model="rightForm.hp_zjsz" :my-props="{ multiple: true }"
+                                <remote-cascader-user v-model="rightForm.hp_zjsz" :my-props="{ multiple: false }"
                                     :d1="{ dept_id: 2 }" />
                             </el-form-item>
-                            <el-form-item label="附件模板">
+                            <el-form-item label="附件模板" prop="hp_fjmb">
                                 <FileUpload :full.sync="rightForm.hp_fjmb"></FileUpload>
                             </el-form-item>
-                            <el-form-item label="评分方式">
+                            <el-form-item label="评分方式" prop="hp_name">
                                 <el-radio-group v-model="rightForm.hp_pfzbsz">
                                     <el-radio label="1">最高分最低分设置</el-radio>
                                     <el-radio label="2">占比设置</el-radio>
@@ -176,17 +184,19 @@
                             </el-form-item>
 
                             <template v-if="rightForm.hp_pfzbsz === '1'">
-                                <el-form-item label="最高分" required>
+                                <el-form-item label="最高分" :rules="{ required: true, message: '最高分不能为空', tigger: 'submit' }"
+                                    prop="hp_dffw">
                                     <el-input-number :min="rightForm.hp_affw || -Infinity" controls-position="right"
                                         v-model="rightForm.hp_dffw"></el-input-number>
                                 </el-form-item>
-                                <el-form-item label="最低分" required>
+                                <el-form-item label="最低分" :rules="{ required: true, message: '最低分不能为空', tigger: 'submit' }"
+                                    prop="hp_affw">
                                     <el-input-number :max="rightForm.hp_dffw || Infinity" controls-position="right"
                                         v-model="rightForm.hp_affw"></el-input-number>
                                 </el-form-item>
                             </template>
-                            <template v-if="rightForm.hp_pfzbsz === '2'">
-                                <el-form-item label="占比(%)" required>
+                            <template v-if="rightForm.hp_pfzbsz === '2'" prop="hp_zbsz">
+                                <el-form-item label="占比(%)" :rules="{ required: true, message: '占比不能为空', tigger: 'submit' }">
                                     <el-input-number controls-position="right" :min="0" :max="100"
                                         v-model="rightForm.hp_zbsz"></el-input-number>
                                 </el-form-item>
@@ -205,7 +215,7 @@
 </template>
 
 <script>
-import { defineComponent, ref, onUnmounted } from "@vue/composition-api";
+import { defineComponent, ref, onUnmounted, getCurrentInstance } from "@vue/composition-api";
 import { treeApi, queryApi, addApi, deleteApi, editApi } from '../api'
 import { Message } from 'element-ui'
 import FileUpload from "@/components/FileUpload/index.vue";
@@ -215,6 +225,8 @@ export default defineComponent({
     props: ["hp_id"],
     components: { FileUpload, RemoteCascaderUser },
     setup(props) {
+        const _this = getCurrentInstance().proxy;
+        const rightFormRef = ref()
         const RootId = props.hp_id;
         // 刷新后丢失数据
         const RootName = ref(sessionStorage.getItem("hp_name"));
@@ -333,6 +345,7 @@ export default defineComponent({
             visibleRight.value = false;
         }
         function handleRightSubmit() {
+            // console.log('_this :>> ', _this);
             function fetchApi() {
                 if (currentMode === "add") {
                     return addApi({
@@ -347,14 +360,22 @@ export default defineComponent({
                     return editApi(rightForm.value.hp_id, rightForm.value);
                 }
             }
-            fetchApi().then(({ code }) => {
-                if (code === "1") {
-                    Message.success("提交成功");
-                    handleRightQuery();
+            _this.$refs['rightFormRef'].validate((valid) => {
+                if (valid) {
+                    fetchApi().then(({ code }) => {
+                        if (code === "1") {
+                            Message.success("提交成功");
+                            handleRightQuery();
+                        }
+                    }).then(() => {
+                        handleRightCancel();
+                    });
+                } else {
+                    console.log('error submit!!');
+                    return false;
                 }
-            }).then(() => {
-                handleRightCancel();
             });
+
         }
         function handleRightDel(id) {
             deleteApi(id).then(({ code }) => code === "1" && (handleRightQuery()));
@@ -382,6 +403,7 @@ export default defineComponent({
             handleRightAdd,
             handleRightDel,
             handleRightEdit,
+            rightFormRef
         };
     },
 })