移动端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
1 год назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
1 год назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
1 год назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
1 год назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
1 год назад
2 лет назад
2 лет назад
2 лет назад
2 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  1. <template>
  2. <div class="app-container">
  3. <van-sticky style="position:relative;">
  4. <div class="bannerBg">
  5. <van-nav-bar
  6. style="background:transparent;border-bottom-width:0;margin-bottom:.5rem;"
  7. @click-left="goBack()"
  8. right-text ="首页"
  9. @click-right="goRightBack()"
  10. >
  11. <template #left>
  12. <van-icon name="arrow-left" size="18" color="#fff" />
  13. </template>
  14. <!-- <template #right>
  15. <van-icon name="map-marked" size="18" color="#fff" />
  16. </template>-->
  17. <template #title>
  18. <p style="color:#fff">入户调查</p>
  19. </template>
  20. </van-nav-bar>
  21. </div>
  22. <div style="width:95%;left:2.5%;position:absolute;background:#fff;border-radius:15px;box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.16);padding: .3rem;top:1.2rem">
  23. <van-row>
  24. <van-col span="4" :offset="1" style="text-align:center;" @click="$router.push({path:'/homesteadSurvey/add'})">
  25. <van-icon :name="require('../../assets/images/housesteadSurvey/zjd'+(active==1?'A':'D')+'.png')" size="1rem" style="margin-top:0px;"/>
  26. <p :style="{color:(active==1?'rgb(34, 183, 242)':'#000')}">宅基地</p>
  27. </van-col>
  28. <van-col span="2">
  29. <div style="border-top: 2px dashed #b5b4b4;margin-top: 20px;"></div>
  30. </van-col>
  31. <van-col span="4" style="text-align:center;" @click="$router.push({path:'/homesteadSurvey/add2'})" >
  32. <van-icon :name="require('../../assets/images/housesteadSurvey/nhxx'+(active==2?'A':'D')+'.png')" size="1rem" style="margin-top:0px;"/>
  33. <p :style="{color:(active==2?'rgb(34, 183, 242)':'#000')}">使用权人</p>
  34. </van-col>
  35. <van-col span="2">
  36. <div style="border-top: 2px dashed #b5b4b4;margin-top: 20px;"></div>
  37. </van-col>
  38. <van-col span="4" style="text-align:center;" @click="$router.push({path:'/homesteadSurvey/add3'})" >
  39. <van-icon :name="require('../../assets/images/housesteadSurvey/fwxx'+(active==3?'A':'D')+'.png')" size="1rem" style="margin-top:0px;"/>
  40. <p :style="{color:(active==3?'rgb(34, 183, 242)':'#000')}">房屋</p>
  41. </van-col>
  42. <van-col span="2">
  43. <div style="border-top: 2px dashed #b5b4b4;margin-top: 20px;"></div>
  44. </van-col>
  45. <van-col span="4" style="text-align:center;" @click="$router.push({path:'/homesteadSurvey/add4'})">
  46. <van-icon :name="require('../../assets/images/housesteadSurvey/fsss'+(active==4?'A':'D')+'.png')" size="1rem" style="margin-top:0px;"/>
  47. <p :style="{color:(active==4?'rgb(34, 183, 242)':'#000')}">附属物</p>
  48. </van-col>
  49. </van-row>
  50. </div>
  51. </van-sticky>
  52. <div style="margin:1.6rem auto 0;width: 95%;">
  53. <p class="title" style="position:relative;padding-left:10px;line-height:20px;font-size: 16px;margin-bottom: 5px;">附属设施</p>
  54. </div>
  55. <van-list
  56. v-model:loading="loading"
  57. :finished="finished"
  58. finished-text="没有更多了"
  59. :immediate-check="false"
  60. @load="onRefreshFsss"
  61. >
  62. <van-swipe-cell v-for="(item,index) in fssslist" :key="'fsss'+index" style="border-radius: 16px;box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.16); width:95%;margin:15px auto 0;background:#fff;">
  63. <div style="padding:15px;">
  64. <p style="display: flex;align-items: center;">
  65. <img src="../../assets/images/housesteadSurvey/add03.png" alt="" style="margin-right: 5px;">
  66. <span style="line-height: 1;font-size: 16px;">{{ formatDict(fssslxList, item.fssslx) }}</span>
  67. </p>
  68. <div style="display:flex;line-height:20px;margin-top: 15px;font-size: 14px;color: #999999;">
  69. <p style="flex:1;text-align:left;">建筑面积(㎡):</p>
  70. <p style="flex:1;text-align:right;">{{item.jzmj}}</p>
  71. </div>
  72. <div style="display:flex;line-height:20px;margin-top: 5px;font-size: 14px;color: #999999;">
  73. <p style="flex:1;text-align:left;">建筑物情况:</p>
  74. <p style="flex:1;text-align:right;">{{ formatDict(jzwqkList, item.jzwqk) }} </p>
  75. </div>
  76. <div style="text-align:center;overflow:auto;display: flex;justify-content: center;margin-top: 10px;">
  77. <p style="width:49%;display: flex;align-items: center;justify-content:center;border: 1px solid transparent;background: #22B7F2;padding: 3px 0;border-radius: 50px;" @click="showUploadList(item.id)">
  78. <van-icon name="photo-o" size=".4rem" color="#FFFFFF"/>
  79. <span style="font-size: 14px;color: #fff;margin-left: 5px;">附件</span>
  80. </p>
  81. <p style="width:49%;display: flex;align-items: center;justify-content:center;border: 1px solid transparent;background: #22B7F2;padding: 3px 0;border-radius: 50px;" @click="showPopupzrz(item)">
  82. <img src="../../assets/images/housesteadSurvey/add01.png" alt="">
  83. <span style="font-size: 14px;color: #fff;margin-left: 5px;" >查看附属设施信息</span>
  84. </p>
  85. </div>
  86. </div>
  87. <template #right>
  88. <van-button v-show="permission == 'true'" square text="删除" type="danger" class="delete-button" @click="deletefsss(item)"/>
  89. </template>
  90. </van-swipe-cell>
  91. </van-list>
  92. <div v-if="permission == 'true' " style=" width:95%;margin:20px auto;display: flex;justify-content: center;">
  93. <div style="width:100%;text-align:center;overflow:auto;border-radius: 16px;box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.16);padding: 15px 0px;background: #ffffff;color: #22B7F2;">
  94. <p style="font-size: 16px;" @click="showPopupAddzrz()">+ 添加附属设施信息</p>
  95. </div>
  96. </div>
  97. <div style="width:95%;margin:20px auto;text-align:center;overflow:auto;display: flex;justify-content: space-around;">
  98. <p v-if="permission == 'true'" style="width:32%;border: 1px solid transparent;background: #FA5353;padding: 5px 0;border-radius: 50px;">
  99. <span style="font-size: 14px;color: #fff;margin-left: 5px;" @click="ycbj()">异常标记</span>
  100. </p>
  101. <p v-if="permission == 'true'" style="width:32%;border: 1px solid transparent;background: #22B7F2;padding: 5px 0;border-radius: 50px;">
  102. <span style="font-size: 14px;color: #fff;margin-left: 5px;" @click="qmqr()">签名确认</span>
  103. </p>
  104. <p v-if = "showDcsh" style="width:32%;border: 1px solid #22B7F2;background: #ffffff;padding: 5px 0;border-radius: 50px;">
  105. <span style="font-size: 14px;color: #22B7F2;margin-left: 5px;" @click="dcsh()">调查审核</span>
  106. </p>
  107. </div>
  108. <van-popup v-model="dcshShow" position="bottom">
  109. <van-picker
  110. show-toolbar
  111. :columns="examineData"
  112. value-key="dictLabel"
  113. @confirm="onSurveyStatusChanged"
  114. @cancel="dcshShow = false"
  115. />
  116. </van-popup>
  117. <van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
  118. close-icon="close">
  119. <van-row style="margin:0 10%">
  120. <p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
  121. </van-row>
  122. <div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
  123. <vue-esign
  124. ref="esign"
  125. class="mySign"
  126. :width="500"
  127. :height="height"
  128. :isCrop="signature.isCrop"
  129. :lineWidth="signature.lineWidth"
  130. :lineColor="signature.lineColor"
  131. :bgColor.sync="signature.bgColor"
  132. v-if="!signature.resultImg"
  133. />
  134. </div>
  135. <img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
  136. style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
  137. <img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
  138. <div class="signature-footer" v-if="!signature.resultImg">
  139. <van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
  140. <van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
  141. </van-row>
  142. </div>
  143. </van-popup>
  144. <van-dialog v-model="ycbzShow" title="异常标记" show-cancel-button confirmButtonText="保存" cancelButtonText="关闭" @confirm="confirmn" >
  145. <van-row>
  146. <van-col span="24">
  147. <van-field v-model="zjdzdxx.surveyBz" label="异常备注" placeholder="异常备注" input-align="right" />
  148. </van-col>
  149. <van-col span="12">
  150. <p style="margin-left: 10%;color: #646566; font-size: 0.373333rem;">备注图片</p>
  151. </van-col>
  152. <van-col span="12">
  153. <MultiImageUploadComp :value="zjdzdxx.surveyBztp" :uploadDisabled="false" @fileUpdate="fileUpdate"/>
  154. </van-col>
  155. </van-row>
  156. </van-dialog>
  157. <van-popup v-model:show="showImageList" position="bottom" style="height:40vh;padding:50px 10px 0" closeable
  158. close-icon="close">
  159. <p style="color:#000;position:absolute;top:0.426667rem;left:0.426667rem">图片上传</p>
  160. <div style="width:100%;height:calc( 40vh - 100px);overflow-y: scroll;">
  161. <van-uploader accept="image/*" v-model="uploadImgList" :after-read="beforeReadImageList" @delete="deleteFileImageList" multiple :max-count="50" />
  162. </div>
  163. <van-row justify="space-around" style=" position:fixed;bottom:0;left:0;width:100%;height:50px;text-align: center;">
  164. <van-col span="12"><van-button type="primary" style="width:100px;" round @click="qkClick">清空</van-button></van-col>
  165. <van-col span="12"><van-button type="primary" style="width:100px;" round @click="submitUploadList(zjdId)">上传</van-button></van-col>
  166. </van-row>
  167. </van-popup>
  168. </div>
  169. </template>
  170. <script>
  171. import {attach} from "@/api/onlineHome/homestead/application";
  172. import {getZjdzd,updateZjdzd,zjddcSign} from "@/api/homesteadSurvey/zjdzd";
  173. import MapGisDrawing from "@/components/Map/MapGisDrawing";
  174. import {listFsss,addFsss,updateFsss,delFsss,getFsssZjdDmList,updateFsssStatus} from "@/api/homesteadSurvey/fsss";
  175. import MultiImageUploadComp from "@/components/house/MultiImageUploadComp"
  176. import {uploadFile} from "@/api/homesteadSurvey/zjdzd";
  177. import {attachmentFind} from "@/api/sunVillage_info/homestead/application";
  178. import {systemAttachment} from "@/api/onlineHome/bankAgriculture/paymentApproval";
  179. import {base64Attach} from "@/api/user";
  180. import {Dialog} from "vant";
  181. import $ from "jquery";
  182. export default {
  183. name: "homesteadAdd",
  184. components: { MapGisDrawing,MultiImageUploadComp},
  185. data() {
  186. return {
  187. active:4,
  188. dcshShow:false,
  189. showesign:false,
  190. showDcsh:false,
  191. loading:false,
  192. finished:false,
  193. countyhc:1,
  194. ycbzShow:false,
  195. permission:false,
  196. showImageList:false,
  197. zjdId:null,
  198. uploadImgList:[],
  199. uploadImgList1:[],
  200. bztp:"",
  201. ycbz:"",
  202. jzwqkList:[],
  203. fssslxList:[],
  204. examineData:[{dictLabel:"审批通过",dictValue:"5"},{dictLabel:"审批驳回",dictValue:"4"}],
  205. zjdzdxx:{surveyStatus:"5"},
  206. fssslist:[],
  207. //电子签名
  208. signature: {
  209. lineWidth: 6, // 画笔的线条粗细
  210. lineColor: "#000000", // 画笔的颜色
  211. bgColor: "", // 画布的背景颜色
  212. resultImg: "", // 最终画布生成的base64图片
  213. isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
  214. },
  215. };
  216. },
  217. created(){
  218. this.houseGetDicts("jzwqk").then((response) => {
  219. this.jzwqkList = response.data;
  220. });
  221. this.houseGetDicts("fsss_type").then((response) => {
  222. this.fssslxList = response.data;
  223. });
  224. this.zjdzdxx = JSON.parse(localStorage.getItem("zjdzdxxItem"));
  225. this.permission = localStorage.getItem("executePermission");
  226. let businessLevel = this.$store.state.user.businessLevel;
  227. console.info(this.zjdzdxx);
  228. if(this.zjdzdxx.surveySign != null){
  229. this.signature.resultImg = this.$store.getters.baseRoutingUrl+this.zjdzdxx.surveySign;
  230. }
  231. if(this.zjdzdxx.id !== undefined){
  232. getZjdzd(this.zjdzdxx.id).then((response) => {
  233. if(response.data.surveyStatus === "3" && businessLevel === "2"){
  234. this.showDcsh = true;
  235. }
  236. });
  237. this.getList();
  238. }
  239. this.height = window.screen.height * 1.28 - 20;
  240. },
  241. mounted(){
  242. },
  243. methods: {
  244. getList(){
  245. let params = {
  246. zjddm:this.zjdzdxx.zjddm,
  247. pageNum: this.countyhc+1,
  248. pageSize:10,
  249. }
  250. listFsss(params).then(response => {
  251. this.fssslist = response.rows;
  252. if(response.rows.length>0&&response.rows.length<response.total){
  253. this.countyhc++
  254. this.loading = false
  255. }else{
  256. this.loading = false
  257. this.finished = true
  258. }
  259. });
  260. },
  261. fileUpdate(val){
  262. this.$set(this.zjdzdxx, 'surveyBztp',val.path);
  263. },
  264. canvasTTdown() {
  265. $('#canvasTT').css('display', 'none');
  266. },
  267. onSurveyStatusChanged(val){
  268. this.$set(this.zjdzdxx, 'surveyStatus', val.dictValue);
  269. if(val.dictValue === "5"){
  270. let surveyItem = JSON.parse(localStorage.getItem("surveyItem"));
  271. this.$set(this.zjdzdxx, 'surveyId', surveyItem.id);
  272. }
  273. updateZjdzd(this.zjdzdxx).then(response => {
  274. let _this =this
  275. _this.$toast({
  276. icon: 'success', // 找到自己需要的图标
  277. message: '保存成功',
  278. duration:"1000",
  279. onClose:function(){
  280. _this.dcshShow = false;
  281. _this.goRightBack();
  282. }
  283. })
  284. });
  285. },
  286. onRefreshFsss(){
  287. if(this.loading){
  288. let params = {
  289. zjddm:this.zjdzdxx.zjddm,
  290. pageNum: this.countyhc+1,
  291. pageSize:10,
  292. }
  293. listFsss(params).then(response => {
  294. if(response.rows.length>0&&response.rows.length<response.total){
  295. response.rows.map(res => {
  296. this.fssslist.push(res)
  297. })
  298. this.countyhc++
  299. this.loading = false
  300. }else{
  301. this.loading = false
  302. this.finished = true
  303. }
  304. });
  305. }
  306. },
  307. goRightBack(){
  308. this.$router.push({path:'/homesteadSurvey/list'});
  309. },
  310. // 清空画板
  311. handleReset() {
  312. this.resultImg = null
  313. if(this.$refs.esign){
  314. this.$refs.esign.reset();
  315. }
  316. $('#canvasTT').css('display', 'block')
  317. },
  318. // 生成签字图
  319. handleGenerate() {
  320. console.info( this.$refs.esign
  321. .generate() );
  322. this.$refs.esign
  323. .generate() // 使用生成器调用把签字的图片转换成为base64图片格式
  324. .then((res) => {
  325. this.signature.resultImg = res;
  326. let wj = this.dataURLtoBlob(res);
  327. let param = new FormData() // 创建form对象
  328. param.append('file', wj) // 通过append向form对象添加数据
  329. param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
  330. zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
  331. this.$notify({type: 'success', message: '签字成功'});
  332. this.showesign = false;
  333. getZjdzd(this.zjdzdxx.id).then((response) => {
  334. localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
  335. location.reload();
  336. });
  337. });
  338. })
  339. .catch((err) => {
  340. // 画布没有签字时会执行这里提示一下
  341. this.$toast.fail('请签名后再保存签字');
  342. });
  343. },
  344. formatDict(dict, value) {
  345. return this.selectDictLabel(dict, value);
  346. },
  347. dataURLtoBlob (dataurl, filename = 'file') {
  348. let arr = dataurl.split(',')
  349. let mime = arr[0].match(/:(.*?);/)[1]
  350. let suffix = mime.split('/')[1]
  351. let bstr = atob(arr[1])
  352. let n = bstr.length
  353. let u8arr = new Uint8Array(n)
  354. while (n--) {
  355. u8arr[n] = bstr.charCodeAt(n)
  356. }
  357. return new File([u8arr], `${filename}.${suffix}`, {
  358. type: mime
  359. })
  360. },
  361. goBack(){
  362. if(this.ztMap && this.enterMap ==1){
  363. if(this.form.id == null){
  364. this.backMap.backMapZjdAData.theGeom= "";
  365. }else{
  366. this.backMap.backMapZjdAData = this.form;
  367. }
  368. this.$cookies.set("search",this.backMap);
  369. } else {
  370. this.$cookies.set("search","");
  371. }
  372. this.$router.push({name: this.$router.back(-1)});
  373. // }
  374. },
  375. showPopupzrz(item){ this.$router.push({name:'fsssAdd',query:item});},
  376. showPopupAddzrz(){
  377. this.$router.push({name:'fsssAdd',query:{zjddm:this.zjdzdxx.zjddm}});
  378. },
  379. deletefsss(val){
  380. const ids = val.id || this.ids;
  381. Dialog.confirm({
  382. title: '系统提示',
  383. message: '是否确认删除附属物标识为"' + val.id + '"的数据项?',
  384. confirmButtonText: '确定',
  385. cancelButtonText: '取消'
  386. })
  387. .then(function() {
  388. return delFsss(ids);
  389. }).then(() => {
  390. this.$notify({ type: 'success' , message: "删除成功" });
  391. location.reload(true);
  392. }).catch(() => {});
  393. },
  394. qmqr(){
  395. this.showesign = true;
  396. },
  397. ycbj(){
  398. this.ycbzShow = true;
  399. },
  400. confirmn(){
  401. this.$set(this.zjdzdxx, 'surveyStatus', "2");
  402. updateZjdzd(this.zjdzdxx).then(response => {
  403. localStorage.setItem("zjdzdxxItem",JSON.stringify(this.zjdzdxx));
  404. let _this =this
  405. this.$toast({
  406. icon: 'success', // 找到自己需要的图标
  407. message: '保存成功',
  408. duration:"1000",
  409. onClose:function(){
  410. _this.getList();
  411. _this.$router.push({path:'/homesteadSurvey/add4',query: {zjddm: _this.zjdzdxx.zjddm}});
  412. }
  413. })
  414. });
  415. },
  416. dcsh(){
  417. this.dcshShow = true;
  418. },
  419. showUploadList(id){
  420. this.getAttachments(id);
  421. this.showImageList = true;
  422. this.zjdId = id;
  423. },
  424. getAttachments(id) {
  425. this.uploadImgList = [];
  426. let cond = {
  427. tableId: id,
  428. tableName: 't_homestead_fsss',
  429. fileType: 0,
  430. };
  431. attachmentFind(cond).then(resp => {
  432. this.uploadImgList = resp.data.map(function(item){
  433. return {id:item.id,url:'/api'+item.fileUrl,isImage: true}
  434. });
  435. });
  436. },
  437. deleteFileImageList(file){
  438. if(file.id !== undefined ){
  439. systemAttachment(file.id);
  440. }
  441. },
  442. // 图片上传前
  443. beforeReadImageList(file){
  444. let _this = this;
  445. if(file.length!=undefined){
  446. file.map(res => {
  447. let zjddm = res.file.name
  448. //zjddm=zjddm.substring(0,zjddm.lastIndexOf("\("));
  449. // 创建Canvas对象(画布)
  450. let canvas = document.createElement('canvas')
  451. // 获取对应的CanvasRenderingContext2D对象(画笔)
  452. let context = canvas.getContext('2d')
  453. // 创建新的图片对象
  454. let img = new Image()
  455. // 指定图片的DataURL(图片的base64编码数据)
  456. img.src = res.content
  457. // 监听浏览器加载图片完成,然后进行进行绘制
  458. img.onload = () => {
  459. /*const h = img.height
  460. const w = img.width*/
  461. let ch = img.height/5
  462. let cw = img.width/5
  463. let canvas = document.createElement('canvas')
  464. let ctx = canvas.getContext('2d')
  465. canvas.height = ch
  466. canvas.width = cw
  467. ctx.clearRect(0,0,cw,ch)
  468. ctx.drawImage(img,0,0,cw,ch)
  469. let base_img = canvas.toDataURL('image/jpeg')
  470. let blobBin = atob(base_img.split(',')[1])
  471. let d = []
  472. for (let i=0;i<blobBin.length;i++){
  473. d.push(blobBin.charCodeAt(i))
  474. }
  475. let data2 = new FormData();
  476. data2.append("file", new Blob([new Uint8Array(d)],{type:'image/jpeg'}));
  477. uploadFile(data2);
  478. }
  479. })
  480. }else{
  481. let zjddm = file.file.name
  482. //zjddm=zjddm.substring(0,zjddm.lastIndexOf("\("));
  483. // 创建Canvas对象(画布)
  484. let canvas = document.createElement('canvas')
  485. // 获取对应的CanvasRenderingContext2D对象(画笔)
  486. let context = canvas.getContext('2d')
  487. // 创建新的图片对象
  488. let img = new Image()
  489. // 指定图片的DataURL(图片的base64编码数据)
  490. img.src = file.content
  491. // 监听浏览器加载图片完成,然后进行进行绘制
  492. img.onload = () => {
  493. /*const h = img.height
  494. const w = img.width*/
  495. let ch = img.height/5
  496. let cw = img.width/5
  497. let canvas = document.createElement('canvas')
  498. let ctx = canvas.getContext('2d')
  499. canvas.height = ch
  500. canvas.width = cw
  501. ctx.clearRect(0,0,cw,ch)
  502. ctx.drawImage(img,0,0,cw,ch)
  503. let base_img = canvas.toDataURL('image/jpeg')
  504. let blobBin = atob(base_img.split(',')[1])
  505. let d = []
  506. for (let i=0;i<blobBin.length;i++){
  507. d.push(blobBin.charCodeAt(i))
  508. }
  509. let data2 = new FormData();
  510. data2.append("file", new Blob([new Uint8Array(d)],{type:'image/jpeg'}));
  511. uploadFile(data2);
  512. }
  513. }
  514. },
  515. qkClick(){
  516. this.uploadImgList1 = this.uploadImgList;
  517. for(let i = 0; i < this.uploadImgList1.length; i++){
  518. if(this.uploadImgList[i].id !== undefined ){
  519. systemAttachment(this.uploadImgList[i].id);
  520. }
  521. }
  522. this.uploadImgList = [];
  523. },
  524. submitUploadList(val){
  525. let f = []
  526. for (let i of this.uploadImgList){
  527. if(i.content !== undefined){
  528. f.push(i.content)
  529. }
  530. }
  531. let _this = this;
  532. let file = {
  533. tableId:val,
  534. tableName:"t_homestead_fsss",
  535. bizPath:"upload",
  536. fileType:"0",
  537. files: f
  538. };
  539. base64Attach(file).then((resp) => {
  540. this.$toast({
  541. icon: 'success', // 找到自己需要的图标
  542. message: '上传成功',
  543. duration:"1000",
  544. onClose:function(){
  545. _this.showImageList = false
  546. }
  547. })
  548. });
  549. },
  550. }
  551. }
  552. </script>
  553. <style scoped>
  554. >>> .bannerBg{
  555. width: 100%;
  556. color:#fff;
  557. padding:10px;
  558. background: linear-gradient(134deg,#7ac943 1%, #22b7f2);
  559. }
  560. >>> .van-hairline--bottom::after {
  561. border-bottom-width: 0;
  562. }
  563. >>> .title:before
  564. {
  565. content:"";
  566. width: 6px;
  567. height: 20PX;
  568. background: #7ac943;
  569. border-radius: 3px;
  570. position:absolute;
  571. left:0;
  572. bottom:0;
  573. }
  574. >>> .delete-button {
  575. height: 100%;
  576. }
  577. >>> .van-swipe-cell__wrapper{
  578. margin-right:-3px;
  579. }
  580. >>> .label-class .van-collapse-item__title--expanded{
  581. font-weight: bold;
  582. }
  583. /deep/ .van-nav-bar__text {
  584. color: #fff;
  585. }
  586. .signature-footer {
  587. transform: rotate(90deg);
  588. width: auto;
  589. position: absolute;
  590. top: 50%;
  591. left: 0px;
  592. }
  593. .clearBtn {
  594. margin-left: 15px;
  595. }
  596. </style>