zhaoyun 6 달 전
부모
커밋
33c07c4230

+ 2 - 2
src/views/distributionnetwork/maintenance/completion-statistics/index.vue

@@ -25,7 +25,7 @@
 			  placeholder="请选择"
 			  clearable
 			>
-			  <el-option label="否" value=""> </el-option>
+			  <el-option label="否" value="99"> </el-option>
 			  <el-option
 			    v-for="item in maintenanceTimeList"
 			    :key="item.parValue"
@@ -43,7 +43,7 @@
 		    placeholder="请选择"
 		    clearable
 		  >
-		    <el-option label="否" value=""> </el-option>
+		    <el-option label="否" value="99"> </el-option>
 		    <el-option
 		      v-for="item in repeatPowerFailureList"
 		      :key="item.parValue"

+ 225 - 0
src/views/distributionnetwork/maintenance/process/components/fileUpload.vue

@@ -0,0 +1,225 @@
+<template>
+  <div class="upload-file">
+    <el-upload
+      multiple
+      :action="uploadFileUrl"
+      :before-upload="handleBeforeUpload"
+      :file-list="fileList"
+      :limit="limit"
+      :on-error="handleUploadError"
+      :on-exceed="handleExceed"
+      :on-success="handleUploadSuccess"
+      :show-file-list="false"
+      :headers="headers"
+      class="upload-file-uploader"
+      ref="fileUpload"
+    >
+      <!-- 上传按钮 -->
+      <el-button size="mini" type="primary">选取文件</el-button>
+      <!-- 上传提示 -->
+      <div class="el-upload__tip" slot="tip" v-if="showTip">
+        请上传
+        <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+        <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+        的文件
+      </div>
+    </el-upload>
+
+    <!-- 文件列表 -->
+    <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
+      <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+        <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+          <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
+        </el-link>
+        <div class="ele-upload-list__item-content-action">
+          <el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
+        </div>
+      </li>
+    </transition-group>
+  </div>
+</template>
+
+<script>
+import { updateProcess } from "@/api/powerdistribution/process";
+import { getToken } from "@/utils/auth";
+
+export default {
+  name: "FileUpload",
+  props: {
+    // 值
+    value: [String, Object, Array],
+    // 数量限制
+    limit: {
+      type: Number,
+      default: 5,
+    },
+    // 大小限制(MB)
+    fileSize: {
+      type: Number,
+      default: 5,
+    },
+	process:{
+			type:Object,
+			default: null,
+		},
+    // 文件类型, 例如['png', 'jpg', 'jpeg']
+    fileType: {
+      type: Array,
+      default: () => ["doc","docx" ,"xls", "xlsx", "ppt", "ppt", "txt", "pdf"],
+    },
+    // 是否显示提示
+    isShowTip: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {
+      number: 0,
+      uploadList: [],
+      baseUrl: process.env.VUE_APP_BASE_API,
+      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      fileList: [],
+    };
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (val) {
+          let temp = 1;
+          // 首先将值转为数组
+          const list = Array.isArray(val) ? val : this.value.split(',');
+          // 然后将数组转为对象数组
+          this.fileList = list.map(item => {
+            if (typeof item === "string") {
+              item = { name: item, url: item };
+            }
+            item.uid = item.uid || new Date().getTime() + temp++;
+            return item;
+          });
+        } else {
+          this.fileList = [];
+          return [];
+        }
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  computed: {
+    // 是否显示提示
+    showTip() {
+      return this.isShowTip && (this.fileType || this.fileSize);
+    },
+  },
+  methods: {
+    // 上传前校检格式和大小
+    handleBeforeUpload(file) {
+      // 校检文件类型
+      if (this.fileType) {
+        const fileName = file.name.split('.');
+        const fileExt = fileName[fileName.length - 1];
+        const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
+        if (!isTypeOk) {
+          this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
+          return false;
+        }
+      }
+      // 校检文件大小
+      if (this.fileSize) {
+        const isLt = file.size / 1024 / 1024 < this.fileSize;
+        if (!isLt) {
+          this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
+          return false;
+        }
+      }
+      this.$modal.loading("正在上传文件,请稍候...");
+      this.number++;
+      return true;
+    },
+    // 文件个数超出
+    handleExceed() {
+      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+    },
+    // 上传失败
+    handleUploadError(err) {
+      this.$modal.msgError("上传文件失败,请重试");
+      this.$modal.closeLoading()
+    },
+    // 上传成功回调
+    handleUploadSuccess(res, file) {
+      if (res.code === 200) {
+        this.uploadList.push({ name: res.fileName, url: res.fileName });
+        this.uploadedSuccessfully();
+		this.process.fileName=res.fileName;
+		this.process.originalFilename=res.originalFilename;
+		this.process.newFileName=res.newFileName;
+		this.process.url=res.url;
+		this.$emit('success', this.process)
+      } else {
+        this.number--;
+        this.$modal.closeLoading();
+        this.$modal.msgError(res.msg);
+        this.$refs.fileUpload.handleRemove(file);
+        this.uploadedSuccessfully();
+      }
+    },
+    // 删除文件
+    handleDelete(index) {
+      this.fileList.splice(index, 1);
+      this.$emit("input", this.listToString(this.fileList));
+    },
+    // 上传结束处理
+    uploadedSuccessfully() {
+      if (this.number > 0 && this.uploadList.length === this.number) {
+        this.fileList = this.fileList.concat(this.uploadList);
+        this.uploadList = [];
+        this.number = 0;
+        this.$emit("input", this.listToString(this.fileList));
+        this.$modal.closeLoading();
+      }
+    },
+    // 获取文件名称
+    getFileName(name) {
+      if (name.lastIndexOf("/") > -1) {
+        return name.slice(name.lastIndexOf("/") + 1);
+      } else {
+        return "";
+      }
+    },
+    // 对象转成指定字符串分隔
+    listToString(list, separator) {
+      let strs = "";
+      separator = separator || ",";
+      for (let i in list) {
+        strs += list[i].url + separator;
+      }
+      return strs != '' ? strs.substr(0, strs.length - 1) : '';
+    }
+  }
+};
+</script>
+
+<style scoped lang="scss">
+.upload-file-uploader {
+  margin-bottom: 5px;
+}
+.upload-file-list .el-upload-list__item {
+  border: 1px solid #e4e7ed;
+  line-height: 2;
+  margin-bottom: 10px;
+  position: relative;
+}
+.upload-file-list .ele-upload-list__item-content {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  color: inherit;
+}
+.ele-upload-list__item-content-action .el-link {
+  margin-right: 10px;
+}
+</style>

+ 60 - 18
src/views/distributionnetwork/maintenance/process/index.vue

@@ -64,7 +64,7 @@
           :disabled="single"
           @click=""
           v-hasPermi="['powerdistribution:process:edit']"
-        >人工上传</el-button>
+        >人工计划上传</el-button>
       </el-col>
      
       <el-col :span="1.5">
@@ -74,8 +74,7 @@
           icon="el-icon-upload"
           size="mini"
 		   :disabled="maintenancePalan"
-          @click=""
-          v-hasPermi="['powerdistribution:process:export']"
+          @click="uploadMaintenanceFile()"
         >上传检修方案</el-button>
       </el-col>
 	  <el-col :span="1.5">
@@ -85,8 +84,7 @@
 	      icon="el-icon-upload"
 	      size="mini"
 		   :disabled="maintenancePalan"
-	      @click=""
-	      v-hasPermi="['powerdistribution:process:export']"
+	      @click="uploadApproveFile"
 	    >上传审批单</el-button>
 	  </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
@@ -172,19 +170,19 @@
 		</el-row>
         <el-row :gutter="24">
 			<el-col :lg="12">
-        <el-form-item label="所属市公司" prop="city">
-          <el-input v-model="form.city" placeholder="请输入所属市公司" readonly/>
+        <el-form-item label="市州单位" prop="city">
+          <el-input v-model="form.city" placeholder="请输入市州单位" readonly/>
         </el-form-item>
 			</el-col>
 		<el-col :lg="12">
-        <el-form-item label="所属县公司" prop="county">
-          <el-input v-model="form.county" placeholder="请输入所属县公司" readonly/>
+        <el-form-item label="区县单位" prop="county">
+          <el-input v-model="form.county" placeholder="请输入区县单位" readonly/>
         </el-form-item>
 			</el-col>
 		</el-row>
 		<el-row :gutter="24">
 			<el-col :lg="12">
-        <el-form-item label="所属供电所" prop="station">
+        <el-form-item label="供电服务站/所" prop="station">
           <el-input v-model="form.station" placeholder="请输入所属供电所" readonly/>
         </el-form-item>
 			</el-col>
@@ -206,12 +204,30 @@
         </el-form-item>
 			</el-col>
        	</el-row>
+			
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+	
+	<!-- 文件上传对话框 -->
+	<el-dialog :title="fileShow" :visible.sync="uploadVisible" width="550px" append-to-body>
+		  <el-form ref="uploadForm" :model="uploadForm" label-width="100px">
+			  <el-form-item label="月计划编号" prop="planCode">
+			    <el-input v-model="uploadForm.planCode" placeholder="请输入月计划编号"  readonly/>
+			  </el-form-item>
+			  <el-form-item :label="label">
+			      <fileUpload  :fileSize="10" :limit="1" :process="process" @success="handleSuccess"/>
+			  </el-form-item>
+		  </el-form>
+		  <div slot="footer" class="dialog-footer">
+		    <el-button type="primary" @click="submitForm">确 定</el-button>
+		    <el-button  @click="uploadVisible=false" >取 消</el-button>
+		  </div>
+	 </el-dialog>
 	<recordDetails v-if="dialog.detailsSave" ref="detailsDialog" @closed="dialog.detailsSave=false"></recordDetails>
   </div>
 </template>
@@ -219,16 +235,19 @@
 <script>
 import { listProcess, getProcess, delProcess, addProcess, updateProcess } from "@/api/powerdistribution/process";
 import recordDetails from './details'
+import fileUpload from "./components/fileUpload"
 export default {
   name: "Process",
   components: {
-  	recordDetails
+  	recordDetails,
+	fileUpload
   },
   data() {
     return {
 		dialog: {
 			detailsSave:false
 		},
+	  uploadVisible: false,
       // 遮罩层
       loading: true,
       // 选中数组
@@ -248,6 +267,7 @@ export default {
       processList: [],
       // 弹出层标题
       title: "",
+	  fileShow: "",
       // 是否显示弹出层
       open: false,
       // 查询参数
@@ -272,6 +292,9 @@ export default {
       },
       // 表单参数
       form: {},
+	  uploadForm: {},
+	  process:{},
+	  label: '',
       // 表单校验
       rules: {
       }
@@ -338,8 +361,10 @@ export default {
       this.multiple = !selection.length
 	  if(selection.length==1 && selection[0].isMaintenance>0){
 		   this.maintenancePalan=false;
+		   this.process= selection[0];
 	  }else{
 		   this.maintenancePalan=true;
+		   this.process=null;
 	  }
 
     },
@@ -361,18 +386,18 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["uploadForm"].validate(valid => {
         if (valid) {
-          if (this.form.id != null) {
-            updateProcess(this.form).then(response => {
+          if (this.uploadForm.id != null) {
+            updateProcess(this.uploadForm).then(response => {
               this.$modal.msgSuccess("修改成功");
-              this.open = false;
+              this.uploadVisible = false;
               this.getList();
             });
           } else {
-            addProcess(this.form).then(response => {
+            addProcess(this.uploadForm).then(response => {
               this.$modal.msgSuccess("新增成功");
-              this.open = false;
+              this.uploadVisible = false;
               this.getList();
             });
           }
@@ -408,7 +433,24 @@ export default {
 	        return 'highlight-row';
 	      }
 	      return '';
-	    }
+	    },
+		uploadMaintenanceFile(){
+			this.uploadForm.uploadType=0;
+			Object.assign(this.uploadForm, this.process)
+			this.uploadVisible=true;
+			this.fileShow="检修文件上传";
+			this.label="检修文件"
+		},
+		uploadApproveFile(){
+			this.uploadForm.uploadType=1;
+			Object.assign(this.uploadForm, this.process)
+			this.uploadVisible=true;
+			this.fileShow="审批单上传";
+			this.label="审批单"
+		},
+		async handleSuccess(data) {
+			this.uploadForm=data;
+		},
   }
 };
 </script>