浏览代码

8.1 10:42

Tartarus 2 年之前
父节点
当前提交
c75ebf8bbd

+ 271 - 0
src/components/FileUpload/FileUpload.vue

@@ -0,0 +1,271 @@
+<template>
+  <div>
+    <el-upload
+      :action="action"
+      :file-list="fileList"
+      list-type="picture-card"
+      :http-request="uploadFile"
+      :headers="headers"
+      :limit="limit"
+      :accept="accept"
+      :data="data"
+      :class="hideUpload || uploading ? 'hideUpload' : ''"
+      :on-error="handleError"
+      :before-upload="beforeUpload"
+      drag
+      multiple
+    >
+      <i slot="default" class="el-icon-plus"></i>
+      <div slot="file" slot-scope="{ file }">
+        <div class="text-center p-2">
+        <img
+        class="el-upload-list__item-thumbnail"
+        :src="file.file_type ? (file.file_type === 'image' ? file.url : '/images/file/' + file.file_type + '.png') : '/images/file/pdf.png'"
+        alt="" />
+
+        <span
+          v-if="file.status === 'success'"
+          class="el-upload-list__item-actions"
+        >
+          <span
+            v-if="preview"
+            class="el-upload-list__item-preview"
+            @click="handlePreview(file)"
+          >
+            <i class="el-icon-zoom-in"></i>
+          </span>
+          <span
+            v-if="download"
+            class="el-upload-list__item-delete"
+            @click="handleDownload(file)"
+          >
+            <i class="el-icon-download"></i>
+          </span>
+          <span
+            v-if="deleted"
+            class="el-upload-list__item-delete"
+            @click="handleRemove(file)"
+          >
+            <i class="el-icon-delete"></i>
+          </span>
+        </span>
+        <span
+          v-else
+          :class="[
+            uploading ? 'uploading' : '',
+            'el-upload-list__item-actions',
+          ]"
+        >
+          <i class="el-icon-loading" /><i style="font-size: 14px">上传中</i>
+        </span>
+
+        <div style="word-break: break-all;
+         text-overflow: ellipsis;
+         display: -webkit-box;
+         -webkit-box-orient: vertical;
+         -webkit-line-clamp: 2;
+         overflow: hidden;">{{ file.created_at.substr(0,10) + '-' + file.name+'.'+file.ext }}</div>
+      </div>
+
+      </div>
+    </el-upload>
+
+    <el-dialog :visible.sync="previewVisible">
+      <img width="100%" :src="previewImgUrl" alt="" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'FileUpload',
+  props: {
+    type: {
+      type: String,
+      default: () => {
+        return ''
+      },
+    },
+    data: {
+      type: Object,
+      default: () => {
+        return {}
+      },
+    },
+    // 上传的地址
+    action: {
+      type: String,
+      default: '#',
+    },
+    // 设置上传的请求头部
+    headers: {
+      type: Object,
+      default: () => {
+        return {}
+      },
+    },
+    // 上传文件大小限制, 默认 50M,单位M
+    size: {
+      type: [Number, String],
+      default: 50,
+    },
+    // 文件上传格式, 默认jpeg, png,jpg
+    accept: {
+      type: String,
+      default: 'image/jpeg,image/png',
+    },
+    // 是否显示删除操作按钮
+    deleted: {
+      type: Boolean,
+      default: true,
+    },
+    // 是否显示预览操作按钮
+    preview: {
+      type: Boolean,
+      default: false,
+    },
+    // 是否显示下载操作按钮
+    download: {
+      type: Boolean,
+      default: true,
+    },
+    // 上传文件个数限制,默认0 不限制
+    limit: {
+      type: [Number, String],
+      default: 0,
+    },
+  },
+  data() {
+    return {
+      fileList: [], // 默认文件列表
+      hideUpload: false, // 超出限制掩藏上传按钮
+      uploading: false, // 是否上传中,上传时隐藏上传按钮
+      previewImgUrl: '', // 预览图片地址
+      previewVisible: false, // 是否显示预览
+      get_url: '',
+      save_url:'',
+      del_url: '',
+    }
+  },
+  mounted() {
+    if(this.type == 'apply'){
+      this.get_url = `user/folder/${this.data.folder_id}/file/list`
+      this.save_url = `user/folder/${this.data.folder_id}/file`,
+      this.del_url = `user/folder/file`
+    } else {
+      this.get_url = `user/${this.data.user_id}/file/list?type=${this.data.type}`
+      this.save_url = `user/file`
+      this.del_url = `user/file`
+    }
+    this.getData()
+  },
+  methods: {
+    async getData() {
+      const res = await this.$axios.$get(
+        this.get_url
+      )
+      if(res){
+        this.fileList = res.files
+        console.log(this.fileList)
+        this.handleChange()
+      }
+    },
+    async uploadFile(data){
+      var formData = new FormData();
+      formData.append("file", data.file);
+      if(data.data.type){
+        formData.append("type", data.data.type);
+      }
+      formData.append("user_id", data.data.user_id);
+      try{
+        let res = await this.$axios.$post(
+          this.save_url,
+          formData
+        )
+        this.fileList.push(res)
+        console.log(this.fileList)
+      } catch (e) {
+        if (!e.response) return
+        const { data, status } = e.response
+        this.$message.error(`(${status}) ${this.$helper.extractError(data)}`)
+      } finally {
+        this.handleChange()
+      }
+    },
+    // 上传前文件大小判断
+    beforeUpload(file) {
+      const { size } = this
+      const overSize = size > 0 && file.size < 1024 * 1024 * size
+      if (!overSize) this.$message.error(`上传文件大小不能超过 ${size}MB!`)
+      this.uploading = overSize // 是否上传中
+      return overSize
+    },
+    // 上传出错返回
+    handleError(event, file, fileList) {
+      console.log(event, file, fileList, 'error')
+      this.$message.error('服务出错,上传失败!')
+      this.handleChange()
+    },
+    // 删除图片
+    async handleRemove(file) {
+      this.$confirm(`确认删除 ${file.name+'.'+file.ext} 文件?`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const { fileList } = this
+        this.fileList = fileList.filter((item) => item.uid !== file.uid)
+        let res = await this.$axios.$delete(
+          this.del_url + '/' + file.id
+        )
+        this.handleChange()
+      }).catch(()=>{})
+    },
+    // 图片预览
+    handlePreview(file) {
+        window.open(file.url, "_blank");
+      /*
+        this.previewImgUrl = file.url
+        this.previewVisible = true
+      */
+    },
+    handleChange(file, list) {
+      const { limit, fileList } = this
+      if (limit > 0 && fileList.length >= limit) this.hideUpload = true
+      else this.hideUpload = false
+      this.uploading = false
+    },
+    handleDownload(file) {
+      window.open(file.url, "_blank");
+      /*const a = document.createElement('a')
+      a.href = file.url
+      a.click() // 模拟点击事件,实现图片文件的同源下载
+      */
+    },
+  },
+}
+</script>
+
+<style>
+.hideUpload .el-upload--picture-card {
+  display: none;
+}
+.el-upload-list--picture-card .uploading.el-upload-list__item-actions {
+  opacity: 1;
+}
+/*添加、删除文件时去掉动画过渡*/
+.el-upload-list__item {
+  transition: none !important;
+}
+.el-upload-list--picture-card .el-upload-list__item-thumbnail {
+    width: 108px;
+    height: 128px;
+}
+.el-upload-list--picture-card .el-upload-list__item {
+    background-color: inherit;
+    border: none;
+    width: 158px;
+    height: 208px;
+}
+</style>

+ 2 - 1
src/utils/request.js

@@ -78,7 +78,8 @@ service.interceptors.response.use(
     const res = response.data
     const res = response.data
     // if the custom code is not 20000, it is judged as an error.
     // if the custom code is not 20000, it is judged as an error.
 
 
-	console.log(response)
+	console.log(response,"response")
+	console.log(res,"res")
     // if (res.code !== 200) {
     // if (res.code !== 200) {
     //   Message({
     //   Message({
     //     message: res.msg || 'Error',
     //     message: res.msg || 'Error',

+ 1 - 1
src/views/contracts/billDetail.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div>
   <div>
 
 
-    <el-descriptions title="汇票详情" :column="3" border>
+    <el-descriptions title="汇票详情" :column="3" border style="margin: 20px;">
       <el-descriptions-item label="汇票名">{{
       <el-descriptions-item label="汇票名">{{
         list[0].name
         list[0].name
       }}</el-descriptions-item>
       }}</el-descriptions-item>

+ 2 - 2
src/views/contracts/index.vue

@@ -9,9 +9,9 @@
       // //       item.drawersName === this.search -->
       // //       item.drawersName === this.search -->
         <el-input
         <el-input
           v-model="formData.name"
           v-model="formData.name"
-          placeholder="合同名称/编号、承兑人名称或出票..."
+          placeholder="合同名称/编号、承兑人名称或出票人名称"
           clearable
           clearable
-          style="width: 100%"
+          style="width:350px"
           @change="Search"
           @change="Search"
         >
         >
           <i slot="prefix" class="el-input__icon el-icon-search" />
           <i slot="prefix" class="el-input__icon el-icon-search" />

+ 4 - 4
src/views/mine/index.vue

@@ -41,15 +41,15 @@
 						<el-collapse v-model="activeNames" @change="handleChange" style="width: 80%;float: right;">
 						<el-collapse v-model="activeNames" @change="handleChange" style="width: 80%;float: right;">
 							<el-collapse-item title="认证照片" name="3">
 							<el-collapse-item title="认证照片" name="3">
 								<div>
 								<div>
-									<el-image style="width: 100px; height: 100px" :src="form.identifyPicList"
-										:preview-src-list="form.identifyPicList">
+									<el-image style="width: 100px; height: 100px" v-for="(item,index) in form.identifyPicList" :key="index" :src="item"
+									:preview-src-list="form.identifyPicList"	>
 									</el-image>
 									</el-image>
 								</div>
 								</div>
 							</el-collapse-item>
 							</el-collapse-item>
 							<el-collapse-item title="授权委托书" name="4">
 							<el-collapse-item title="授权委托书" name="4">
 								<div>
 								<div>
-									<el-image style="width: 100px; height: 100px" :src="form.proxyFileList"
-										:preview-src-list="form.proxyFileList">
+									<el-image style="width: 100px; height: 100px" v-for="(item,index) in form.proxyFileList" :key="index" :src="item"
+									:preview-src-list="form.identifyPicList"	>
 									</el-image>
 									</el-image>
 								</div>
 								</div>
 							</el-collapse-item>
 							</el-collapse-item>

+ 34 - 20
src/views/register/index.vue

@@ -28,14 +28,11 @@
 							<el-input :key="passwordType" ref="password" v-model="loginForm.surepsd"
 							<el-input :key="passwordType" ref="password" v-model="loginForm.surepsd"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
 								auto-complete="on" @keyup.enter.native="handleLogin" />
 								auto-complete="on" @keyup.enter.native="handleLogin" />
-							<!-- <span class="show-pwd" @click="showPwd">
-                    <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
-                  </span> -->
 						</el-form-item>
 						</el-form-item>
 						<el-form-item prop="mobile">
 						<el-form-item prop="mobile">
 							<span class="svg-container"> 联系电话 </span>
 							<span class="svg-container"> 联系电话 </span>
 							<el-input ref="mobile" v-model="loginForm.mobile" type="text" placeholder="请输入业务员联系电话"
 							<el-input ref="mobile" v-model="loginForm.mobile" type="text" placeholder="请输入业务员联系电话"
-								name="mobile" tabindex="5" auto-complete="on" @keyup.enter.native="handleLogin" />
+								name="mobile" tabindex="5" auto-complete="on" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')" />
 						</el-form-item>
 						</el-form-item>
 
 
 						<el-button :loading="loading" type="primary" class="loginbtn"
 						<el-button :loading="loading" type="primary" class="loginbtn"
@@ -52,7 +49,7 @@
 					</el-form>
 					</el-form>
 				</div>
 				</div>
 
 
-				<div v-if="checked == 1 && showNext" class="overcicle">
+				<!-- <div v-if="checked == 1 && showNext" class="overcicle">
 					<div class="title-container">
 					<div class="title-container">
 						<p class="title">供货商注册</p>
 						<p class="title">供货商注册</p>
 					</div>
 					</div>
@@ -73,14 +70,11 @@
 							<el-input :key="passwordType" ref="password" v-model="providerForm.surepsd"
 							<el-input :key="passwordType" ref="password" v-model="providerForm.surepsd"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
 								auto-complete="on" @keyup.enter.native="handleLogin" />
 								auto-complete="on" @keyup.enter.native="handleLogin" />
-							<!-- <span class="show-pwd" @click="showPwd">
-                    <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
-                  </span> -->
 						</el-form-item>
 						</el-form-item>
 						<el-form-item prop="mobile">
 						<el-form-item prop="mobile">
 							<span class="svg-container"> 联系电话 </span>
 							<span class="svg-container"> 联系电话 </span>
 							<el-input ref="mobile" v-model="providerForm.mobile" type="text" placeholder="请输入业务员联系电话"
 							<el-input ref="mobile" v-model="providerForm.mobile" type="text" placeholder="请输入业务员联系电话"
-								name="mobile" tabindex="5" auto-complete="on" @keyup.enter.native="handleLogin" />
+								name="mobile" tabindex="5" auto-complete="on" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')" />
 						</el-form-item>
 						</el-form-item>
 
 
 						<el-button :loading="loading" type="primary" class="loginbtn"
 						<el-button :loading="loading" type="primary" class="loginbtn"
@@ -95,7 +89,7 @@
 							</div>
 							</div>
 						</div>
 						</div>
 					</el-form>
 					</el-form>
-				</div>
+				</div> -->
 
 
 				<!-- 供货商注册 -->
 				<!-- 供货商注册 -->
 				<div v-if="checked == 1 && !showNext" style="margin-top: 670px" class="overcicle">
 				<div v-if="checked == 1 && !showNext" style="margin-top: 670px" class="overcicle">
@@ -133,7 +127,7 @@
 							<span class="svg-container"> 密码 </span>
 							<span class="svg-container"> 密码 </span>
 							<el-input :key="passwordType" ref="password" v-model="providerForm.password"
 							<el-input :key="passwordType" ref="password" v-model="providerForm.password"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
 								:type="passwordType" placeholder="至少6位数的字母数字组合" name="password" tabindex="4"
-								auto-complete="on" @keyup.enter.native="handleLogin" />
+								auto-complete="on"  />
 							<!-- <span class="show-pwd" @click="showPwd">
 							<!-- <span class="show-pwd" @click="showPwd">
                     <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
                     <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
                   </span> -->
                   </span> -->
@@ -141,7 +135,7 @@
 						<el-form-item prop="mobile" style="margin-bottom: 0">
 						<el-form-item prop="mobile" style="margin-bottom: 0">
 							<span class="svg-container"> 联系电话 </span>
 							<span class="svg-container"> 联系电话 </span>
 							<el-input ref="mobile" v-model="providerForm.contactsMobile" type="text"
 							<el-input ref="mobile" v-model="providerForm.contactsMobile" type="text"
-								placeholder="请输入业务员联系电话" name="mobile" tabindex="5" />
+								placeholder="请输入业务员联系电话" name="mobile" tabindex="5" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')" />
 						</el-form-item>
 						</el-form-item>
 
 
 						<!-- 供应商上传身份证图片 -->
 						<!-- 供应商上传身份证图片 -->
@@ -261,7 +255,7 @@
 					account: "",
 					account: "",
 					password: "",
 					password: "",
 					surepsd: "",
 					surepsd: "",
-					mobile: "",
+					mobile:"",
 				},
 				},
 				/* 供应商数据 */
 				/* 供应商数据 */
 				providerForm: {
 				providerForm: {
@@ -271,7 +265,7 @@
 					socialCode: "",
 					socialCode: "",
 					legalPerson: "",
 					legalPerson: "",
 					contacts: "",
 					contacts: "",
-					contactsMobile: "",
+					contactsMobile:"",
 					identifyPics: [],
 					identifyPics: [],
 					proxyFile: [],
 					proxyFile: [],
 				},
 				},
@@ -370,15 +364,35 @@
 			/* 供应商注册发送请求 */
 			/* 供应商注册发送请求 */
 			handleLogin(form) {
 			handleLogin(form) {
 				if (form == this.loginForm) {
 				if (form == this.loginForm) {
-					request({
+					this.$request({
 						url: "/api/Account/register",
 						url: "/api/Account/register",
 						method: "post",
 						method: "post",
 						data: form,
 						data: form,
-					}).then((res) => {
-						this.$message("注册成功");
-						this.$router.push({
-							path: "/login",
-						});
+					}).then(res => {
+						if(res.code===200){
+							this.$message({
+								type:'success',
+								message:"注册成功"
+							});
+							this.$router.push({
+									path: "/login",
+								});
+						}
+						// if(res.code!=200){
+						// 	this.$message({
+						// 		type:"error",
+						// 		message:res.data.msg
+						// 	});
+						// }else {
+						// 	this.$message({
+						// 		type:"success",
+						// 		message:res.data.msg
+						// 	});
+						// 	this.$router.push({
+						// 		path: "/login",
+						// 	});
+						// }
+						
 					});
 					});
 				} else {
 				} else {
 					this.$request({
 					this.$request({

+ 5 - 5
src/views/sucuirtyaudit/detail.vue

@@ -1,13 +1,13 @@
 <template>
 <template>
 	<div>
 	<div>
-		<el-descriptions title="详情信息" :column="2" border>
+		<el-descriptions title="详情信息" :column="2" border style="margin: 20px;">
 			<el-descriptions-item label="姓名">{{tableData.userName}}</el-descriptions-item>
 			<el-descriptions-item label="姓名">{{tableData.userName}}</el-descriptions-item>
 			<el-descriptions-item label="状态">{{tableData.status}}</el-descriptions-item>
 			<el-descriptions-item label="状态">{{tableData.status}}</el-descriptions-item>
 			<el-descriptions-item label="id">{{tableData.recordId}}</el-descriptions-item>
 			<el-descriptions-item label="id">{{tableData.recordId}}</el-descriptions-item>
 			<el-descriptions-item label="事件名称">{{tableData.event}}</el-descriptions-item>
 			<el-descriptions-item label="事件名称">{{tableData.event}}</el-descriptions-item>
 		</el-descriptions>
 		</el-descriptions>
-		<el-collapse  @change="handleChange">
-			<el-collapse-item title="更新前" name="1">
+		<el-collapse  @change="handleChange" v-model="activeNames">
+			<el-collapse-item title="更新前" name="1" style=" margin-left:20px">
 			  <el-table :data="beforeobj.columns"  border>
 			  <el-table :data="beforeobj.columns"  border>
 			  	<el-table-column label="列表名" prop="columnName">
 			  	<el-table-column label="列表名" prop="columnName">
 			  	</el-table-column>
 			  	</el-table-column>
@@ -22,7 +22,7 @@
 			  	</el-table-column>
 			  	</el-table-column>
 			  </el-table>
 			  </el-table>
 			</el-collapse-item>
 			</el-collapse-item>
-		  <el-collapse-item title="更新后" name="2">
+		  <el-collapse-item title="更新后" name="2" style=" margin-left:20px">
 		    <el-table :data="afterobj.columns"  border>
 		    <el-table :data="afterobj.columns"  border>
 		    	<el-table-column label="列表名" prop="columnName">
 		    	<el-table-column label="列表名" prop="columnName">
 		    	</el-table-column>
 		    	</el-table-column>
@@ -43,7 +43,7 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
-				activeNames:['1'],
+				activeNames:['1','2'],
 				afterobj: {},
 				afterobj: {},
 				beforeobj:{},
 				beforeobj:{},
 				tableData: {},
 				tableData: {},