questionInfo.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877
  1. <template>
  2. <view>
  3. <cu-custom bgColor="bg-blue" :isBack="true" v-if="title == '问题诉求情况'">
  4. <block slot="backText">返回</block>
  5. <block slot="content">问题诉求情况</block>
  6. </cu-custom>
  7. <form @submit="formSubmit" class="cu-list menu">
  8. <view class="titlebg2">
  9. <view class="titlet1" ></view>
  10. <view class="titlet2" >企业信息</view>
  11. </view>
  12. <view class="textbg">
  13. <view class="text12">
  14. 企业名称
  15. </view>
  16. <view class="text22">
  17. {{inputForm.name}}
  18. </view>
  19. </view>
  20. <view class="textbg">
  21. <view class="text12">
  22. 属地
  23. </view>
  24. <view class="text22">
  25. {{inputForm.qySd}}
  26. </view>
  27. </view>
  28. <view class="textbg">
  29. <view class="text12">
  30. 企业负责人
  31. </view>
  32. <view class="text22">
  33. {{inputForm.lxr}}
  34. </view>
  35. </view>
  36. <view class="textbg">
  37. <view class="text12">
  38. 负责人号码
  39. </view>
  40. <view class="text22">
  41. {{inputForm.phone}}
  42. </view>
  43. </view>
  44. <view style="height: 30rpx;background-color: white;"></view>
  45. <view class="titlebg2" style="margin-top:10rpx ;">
  46. <view class="titlet1" ></view>
  47. <view class="titlet2" >挂钩干部</view>
  48. </view>
  49. <view class="textbg">
  50. <view class="text12">
  51. 姓名
  52. </view>
  53. <view class="text22">
  54. {{inputForm.bz5}}
  55. </view>
  56. </view>
  57. <view style="height: 30rpx;background-color: white;"></view>
  58. <view class="titlebg2" style="margin-top:10rpx ;">
  59. <view class="titlet1" ></view>
  60. <view class="titlet2" >主要问题诉求</view>
  61. </view>
  62. <view v-for="(item, index2) in questionList">
  63. <view style="display: flex;background-color: #ffffff;justify-content: space-between; align-items: center;">
  64. <view class="titlebb">
  65. 问题{{index2+1}}
  66. </view>
  67. <!-- <icon v-if="index2!=0" @click="del(index2)" type="cancel" style="padding-right: 15rpx;padding-top: 5rpx;padding-left: 100rpx;"></icon> -->
  68. </view>
  69. <view class="input1">
  70. <view class="title">
  71. 问题名称
  72. </view>
  73. <input v-model="item.qname" placeholder="请填写问题名称" disabled="true" ></input>
  74. </view>
  75. <view class="cu-form-group margin-top">
  76. <view class="title">
  77. 问题类型
  78. </view>
  79. <view class="input2">{{item.qtype||'请选择问题类型'}}</view>
  80. </view>
  81. <view class="cu-form-group margin-top" v-if="item.t1!=''">
  82. <view class="title">
  83. {{item.t1}}
  84. </view>
  85. <input style="width: 200rpx;" v-model="item.gaps" :placeholder="item.t1s" disabled="true"></input>{{item.t1d}}
  86. </view>
  87. <view class="cu-form-group margin-top" style="border-bottom: 3px solid #eee;">
  88. <view class="title">
  89. 问题描述
  90. </view>
  91. <textarea v-model="item.des" placeholder="请填写问题描述" disabled="true" ></textarea>
  92. </view>
  93. <!-- 挂钩干部 -->
  94. <view class="cu-form-group margin-top" v-if="roleIds=='1910141956174053377'" >
  95. <view class="title">
  96. 问题处理
  97. </view>
  98. <radio-group @change="(e) => radioChange(e, index2)" class="radiog">
  99. <label class="uni-list-cell uni-list-cell-pd" v-for="(item3, index3) in dels" :key="item3">
  100. <view>
  101. <radio :value="item3" :checked="index3 === item.current" :disabled="index3 != item.current&&!item.cansubmit" />
  102. </view>
  103. <view style="padding-left: 15rpx;">{{item3}}</view>
  104. </label>
  105. </radio-group>
  106. </view>
  107. <!-- 大走访办公室 -->
  108. <view class="cu-form-group margin-top" v-if="roleIds=='1910175386924417025'" >
  109. <view class="title">
  110. 问题处理
  111. </view>
  112. <radio-group @change="(e) => radioChange(e, index2)" class="radiog">
  113. <label class="uni-list-cell uni-list-cell-pd" v-for="(item3, index3) in dels2" :key="item3">
  114. <view>
  115. <radio :value="item3" :checked="index3 === item.current" :disabled="index3 != item.current&&!item.cansubmit"/>
  116. </view>
  117. <view style="padding-left: 15rpx;">{{item3}}</view>
  118. </label>
  119. </radio-group>
  120. </view>
  121. <!-- 挂钩干部或大走访办公室 -->
  122. <view class="cu-form-group margin-top" v-if="roleIds=='1910175386924417025'||roleIds=='1910141956174053377'" >
  123. <view class="title">
  124. 预计办结时间
  125. </view>
  126. <picker mode="date" class="title2" @change="(e) => onDateChange(e, index2)" v-if="item.cansubmit" >
  127. <view class="input2">{{item.finishdate||'请选择'}}</view>
  128. </picker>
  129. <view class="input2" v-if="!item.cansubmit">{{item.finishdate||'请选择'}}</view>
  130. </view>
  131. <view v-if="showjbdw" class="cu-form-group margin-top" >
  132. <view class="title">
  133. 交办单位
  134. </view>
  135. <zqs-select
  136. class="input2"
  137. :multiple="true"
  138. :list="pickerData"
  139. label-key="label"
  140. value-key="value"
  141. placeholder=" 请选择"
  142. title="请选择交办单位"
  143. clearable
  144. v-model="item.checkUserList"
  145. @search="searchEvent"
  146. @change="selectChange2"
  147. ></zqs-select>
  148. </view>
  149. <view class="cu-form-group margin-top" v-if="(roleIds=='1910175386924417025'||roleIds=='1910141956174053377')&&showjbdw">
  150. <view class="title">
  151. 交办要求
  152. </view>
  153. <textarea v-model="item.delyj" placeholder="请填写交办要求" ></textarea>
  154. </view>
  155. <view class="cu-form-group margin-top" v-if="(roleIds=='1910175386924417025'||roleIds=='1910141956174053377')&&!showjbdw">
  156. <view class="title">
  157. 处理建议
  158. </view>
  159. <textarea v-model="item.delyj" placeholder="请填写处理建议" :disabled="!item.cansubmit" ></textarea>
  160. </view>
  161. <!-- <view class="cu-form-group2 margin-top" style="border-bottom: 3px solid #eee;">
  162. <view class="title">
  163. 附件:
  164. </view>
  165. <button @click="addfj" style="height: 30px;width: 240rpx;margin-left: 55rpx;" class="cu-btn block bg-blue margin-tb-sm lg">+上传附件</button>
  166. </view>
  167. <view v-for="(item3, index3) in item.fj">
  168. <view style="display: flex;background-color: #ffffff;justify-content: space-between; align-items: center;">
  169. <view class="titlebb">
  170. {{item3.fjname}}
  171. </view>
  172. <icon @click="del(index3)" type="cancel" style="padding-right: 15rpx;padding-top: 5rpx;padding-left: 100rpx;"></icon>
  173. </view>
  174. </view> -->
  175. <view class="cu-form-group margin-top" style="border-bottom: 3px solid #eee;" v-if="roleIds=='1910175386924417025'||roleIds=='1910141956174053377'">
  176. <uni-file-picker style="margin-bottom: 10px;" limit="3" ref="picFile" v-model="item.fj"
  177. fileMediatype="all" mode="grid" title="附件上传" :auto-upload="autoUpload" @select="select"
  178. @progress="progress" @success="success" @fail="fail" @delete="deleteFile"
  179. :imageStyles="imageStyles" :disabled="ischeck">
  180. </uni-file-picker>
  181. </view>
  182. <!-- 流程展示 -->
  183. <view v-for="(record, index4) in item.oplist" :key="index4" class="record-item" @click="viewDetails(record)" style="border-bottom: 6px solid #eee;">
  184. <view style="display: flex; flex-direction:row;align-items: center; ">
  185. <view v-if="item.oplist.length!=1" :class="index4 === item.oplist.length - 1 ? 'record-p2' : 'record-p1'"></view>
  186. <view v-if="item.oplist.length==1" class="record-p1"></view>
  187. <text class="record-time">{{ record.opTypeName }}</text>
  188. </view>
  189. <view style="display: flex; flex-direction:row;align-items: center; ">
  190. <view class="submit-time">
  191. <text v-if="record.des6!=''&&record.des6!=undefined" >处理建议:{{ record.des6 }}</text>
  192. <text v-if="record.des5!=''&&record.des5!=undefined" >预计办结时间:{{ record.des5 }}</text>
  193. <text >{{ record.roleName }}-{{ record.des2 }} &nbsp;&nbsp; {{ record.updateDate }}</text>
  194. </view>
  195. </view>
  196. </view>
  197. </view>
  198. <!-- <view style="width: 400rpx;margin-left: 20rpx;">
  199. <button @click="addp" style="height: 30px;" class="cu-btn block bg-blue margin-tb-sm lg">+增加问题</button>
  200. </view> -->
  201. <view style="height: 40rpx;"></view>
  202. <view class="flexC" v-if="cansubmit">
  203. <button v-if="roleIds=='38a14f1f42ed424eab4cb5d489596b0d'" @click="save" class="bt1 block margin-tb-sm lg">暂存</button>
  204. <button form-type="submit" class="bt1 cu-btn block bg-blue margin-tb-sm lg">提交</button>
  205. </view>
  206. <view style="height: 40rpx;"></view>
  207. </form>
  208. </view>
  209. </template>
  210. <script>
  211. var graceChecker = require("@/common/graceChecker.js");
  212. import revenueListService from '@/api/revenue/revenueListService'
  213. import loginService from '@/api/auth/loginService.js'
  214. import * as $auth from "../../common/auth"
  215. export default {
  216. components: {
  217. },
  218. data() {
  219. return {
  220. title: '问题诉求情况',
  221. cansubmit: false,
  222. roleIds:'',
  223. uid:'',
  224. inputForm: {
  225. id:'',
  226. name: '',
  227. industry: '',
  228. lxr: '',
  229. phone: '',
  230. bz1: '',
  231. bz2: '',
  232. bz3: '',
  233. bz4: '',
  234. bz5: '',
  235. bz6: '',
  236. des1: '',
  237. des2: '',
  238. des3: '',
  239. des4: '',
  240. des6: '',
  241. des10: '',
  242. },
  243. t1: '可供产品',
  244. t1s: '请填写可供产品',
  245. t2: '可供数量',
  246. t2s: '请填写可供数量',
  247. t3: '详细描述',
  248. t3s: '请填写详细描述',
  249. autoUpload: false,
  250. picLists: [],
  251. picUrl: [],
  252. imageStyles: {
  253. width: 90,
  254. height: 90
  255. },
  256. parkList: [ "用工人才", "资金需求", "土地厂房", "订单及配套", "政策兑现", "创新及品牌", "审批手续", "水电气供应", "安全环保消防", "其他(需详细说明)"],
  257. questionList:[{qname:"",qtype:"",qTypeindex:"",gaps:"",des:"",t1:"",t1s:""}],
  258. dels:["办结","反馈大走访活动办","正在办理","难以化解","持续跟踪","提请会办"],
  259. dels2:["办结","交办"],
  260. index:0,
  261. ischeck: false,
  262. showjbdw: false,
  263. importUserId: [],
  264. pickerData: [],
  265. pickerDataOld: [],
  266. selectedValues: []
  267. }
  268. },
  269. computed: {
  270. // 动态计算选中的 label
  271. selectedLabels() {
  272. return this.item.checkUserList
  273. .map((value) => {
  274. const item = this.pickerData.find((option) => option.value === value);
  275. return item ? item.label : value; // 如果找不到,返回 value
  276. })
  277. .join(", ");
  278. },
  279. },
  280. onShow() {
  281. this.$auth.checkLogin()
  282. loginService.getDictList({
  283. dictTypeId:"1907700775364263937"
  284. }).then(({data}) => {
  285. this.pickerData = data
  286. this.pickerDataOld = data
  287. //默认第一个选项
  288. //this.checkUserList=this.pickerData[0].value;
  289. }).catch(e => {
  290. })
  291. },
  292. watch: {
  293. value2(val) {
  294. console.log('我是更新后的选中数据', val)
  295. },
  296. },
  297. created() {
  298. },
  299. mounted() {
  300. },
  301. async onLoad(query) {
  302. this.uid= $auth.getUserInfo().id;
  303. if(query.ischeck!=undefined&&query.ischeck=='1'){
  304. //查看
  305. this.ischeck=true;
  306. let data2 = await loginService.getdzfQuestionqueryById({id:query.id})
  307. this.inputForm.id = data2.data.id;
  308. this.inputForm.name = data2.data.qyName;
  309. this.inputForm.qySd = data2.data.qySd;
  310. this.inputForm.lxr = data2.data.qyFzr;
  311. this.inputForm.phone = data2.data.phone;
  312. this.inputForm.bz5 = data2.data.officer;
  313. //判断是否显示提交,暂存按钮
  314. if(data2.data.states=='1'&&data2.data.des1.includes($auth.getUserInfo().loginName)){
  315. this.cansubmit=true;
  316. }
  317. //将流程的最后一步设置到查看(问题处理,预计办结时间,处理建议)
  318. for (let i = 0; i < data2.data.dzfQuestionDetilDTOList.length; i++) {
  319. let opsize=data2.data.dzfQuestionDetilDTOList[i].oplist.length;
  320. for (let j = 0; j < opsize; j++) {
  321. //当前登录人
  322. if (data2.data.dzfQuestionDetilDTOList[i].oplist[j].createBy.id === this.uid) {
  323. //问题处理
  324. if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='3'){
  325. data2.data.dzfQuestionDetilDTOList[i].current=0
  326. }else if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='4'){
  327. data2.data.dzfQuestionDetilDTOList[i].current=1
  328. }else if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='5'){
  329. data2.data.dzfQuestionDetilDTOList[i].current=2
  330. }else if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='6'){
  331. data2.data.dzfQuestionDetilDTOList[i].current=3
  332. }else if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='7'){
  333. data2.data.dzfQuestionDetilDTOList[i].current=4
  334. }else if(data2.data.dzfQuestionDetilDTOList[i].oplist[j].opType=='8'){
  335. data2.data.dzfQuestionDetilDTOList[i].current=5
  336. }
  337. //处理建议
  338. data2.data.dzfQuestionDetilDTOList[i].delyj=data2.data.dzfQuestionDetilDTOList[i].oplist[j].des6
  339. }
  340. }
  341. //办结时间就是显示最后一条处理意见的办结时间
  342. if(data2.data.dzfQuestionDetilDTOList[i].oplist[opsize-1].des5!=undefined&&data2.data.dzfQuestionDetilDTOList[i].oplist[opsize-1].des5!=''){
  343. data2.data.dzfQuestionDetilDTOList[i].finishdate=data2.data.dzfQuestionDetilDTOList[i].oplist[opsize-1].des5
  344. }
  345. //每条问题是否需要提交
  346. if(data2.data.dzfQuestionDetilDTOList[i].des1!=undefined){
  347. let nextuser=data2.data.dzfQuestionDetilDTOList[i].des1+",";
  348. if(nextuser.includes($auth.getUserInfo().loginName+",")){
  349. data2.data.dzfQuestionDetilDTOList[i].cansubmit=true;
  350. }else{
  351. data2.data.dzfQuestionDetilDTOList[i].cansubmit=false;
  352. }
  353. }else{
  354. data2.data.dzfQuestionDetilDTOList[i].cansubmit=false;
  355. }
  356. data2.data.dzfQuestionDetilDTOList[i].checkUserList=[];
  357. }
  358. this.questionList=data2.data.dzfQuestionDetilDTOList;
  359. this.roleIds= $auth.getUserInfo().roleIds;
  360. }else{
  361. //新增
  362. let data2 = await loginService.queryByUserName()
  363. this.inputForm = this.recover(this.inputForm, data2.data)
  364. this.inputForm.id="";
  365. }
  366. },
  367. methods: {
  368. //交办单位
  369. selectChange2() {
  370. // 此处为点击的事件
  371. this.pickerData=this.pickerDataOld;
  372. },
  373. searchEvent(val) {
  374. this.pickerData=this.filteredItems(val);
  375. },
  376. filteredItems(searchQuery) {
  377. const query = searchQuery.trim();
  378. if (!query) return this.pickerDataOld;
  379. return this.pickerDataOld.filter(item => {
  380. return item.label.toString().includes(query);
  381. });
  382. },
  383. //交办单位结束
  384. onDateChange(e,index2) {
  385. this.$set(this.questionList[index2], 'finishdate', e.detail.value);
  386. },
  387. radioChange: function(evt,index2) {
  388. //大走访办公室角色时
  389. if(this.roleIds=='1910175386924417025'){
  390. if(evt.detail.value=='办结'){
  391. this.showjbdw=false;
  392. this.questionList[index2].delyj="";
  393. }else if(evt.detail.value=='交办'){
  394. this.showjbdw=true;
  395. this.questionList[index2].delyj="请2日内回应,10内反馈办理结果,如办结请上传加盖公章的书面材料";
  396. }
  397. for (let i = 0; i < this.dels2.length; i++) {
  398. if (this.dels2[i] === evt.detail.value) {
  399. this.questionList[index2].current = i;
  400. break;
  401. }
  402. }
  403. //其他选择
  404. }else{
  405. console.log("选择:"+evt.detail.value);
  406. for (let i = 0; i < this.dels.length; i++) {
  407. if (this.dels[i] === evt.detail.value) {
  408. this.questionList[index2].current = i;
  409. break;
  410. }
  411. }
  412. }
  413. },
  414. addfj(){
  415. },
  416. addp(){
  417. this.questionList.push({qname:"",qtype:"",qTypeindex:"",gaps:"",des:"",t1:"",t1s:""})
  418. },
  419. del(index2){
  420. this.questionList.splice(index2, 1);
  421. },
  422. bindPickerChange: function(e,index2) {
  423. if(e.detail.value==0){
  424. this.questionList[index2].t1='缺口数';
  425. this.questionList[index2].t1s= '请填写缺口数';
  426. this.questionList[index2].t1d= '人';
  427. }else if(e.detail.value==1){
  428. this.questionList[index2].t1='缺口数';
  429. this.questionList[index2].t1s= '请填写缺口数';
  430. this.questionList[index2].t1d= '万元';
  431. }else if(e.detail.value==2){
  432. this.questionList[index2].t1='缺口数';
  433. this.questionList[index2].t1s= '请填写缺口数';
  434. this.questionList[index2].t1d= '';
  435. }else{
  436. this.questionList[index2].t1='';
  437. this.questionList[index2].t1s= '';
  438. this.questionList[index2].t1d= '';
  439. }
  440. this.questionList[index2].qTypeindex = e.detail.value;
  441. this.questionList[index2].qtype=this.parkList[e.detail.value]
  442. },
  443. // 获取上传进度
  444. progress(e) {
  445. console.log('上传进度:', e)
  446. },
  447. // 上传成功
  448. success(e) {
  449. console.log('上传成功')
  450. },
  451. // 上传失败
  452. fail(e) {
  453. console.log('上传失败:', e)
  454. },
  455. deleteFile(e) {
  456. this.picUrl.splice(e.index, 1)
  457. },
  458. // 获取上传状态
  459. select(e) {
  460. console.log('选择文件:', e)
  461. var _this = this
  462. var i = 0
  463. upload()
  464. function upload() {
  465. if (i >= e.tempFiles.length) {
  466. return;
  467. }
  468. var item = e.tempFiles[i]
  469. uni.showLoading({
  470. title: "上传中",
  471. mask: true
  472. });
  473. uni.uploadFile({
  474. url: '/yd_qycpfb/file/upload?uploadPath=userdir', // 仅为示例,非真实的接口地址
  475. filePath: item.url,
  476. name: 'file',
  477. formData: {
  478. 'fileName': item.name
  479. },
  480. header: {
  481. 'token': _this.$auth.getUserToken()
  482. },
  483. success: (res) => {
  484. var data = res.data
  485. if (typeof data['error'] != "undefined") {
  486. uni.showToast({
  487. icon: 'none',
  488. title: '上传失败,请联系开发!'
  489. });
  490. _this.$refs.picFile.clearFiles(_this.picLists.length)
  491. } else {
  492. _this.picUrl.push({
  493. url: data,
  494. uuid: item.uuid
  495. })
  496. i++;
  497. upload()
  498. }
  499. },
  500. fail: () => {
  501. uni.hideLoading();
  502. uni.showToast({
  503. icon: 'none',
  504. title: '上传失败,请联系开发!'
  505. });
  506. _this.$refs.picFile.clearFiles(_this.picLists.length)
  507. },
  508. complete: function() {
  509. uni.hideLoading();
  510. }
  511. });
  512. }
  513. },
  514. save(){
  515. console.log("交办单位:"+this.checkUserList)
  516. // this.inputForm.des10="";
  517. // this.inputForm.dzfQuestionDetilDTOList=this.questionList;
  518. // this.checkinput();
  519. },
  520. formSubmit: function(e) {
  521. //将交办单位的名称带出
  522. for (let i = 0; i < this.questionList.length; i++) {
  523. if (this.questionList[i].checkUserList != []) {
  524. this.questionList[i].checkUserListName=this.questionList[i].checkUserList.map((value) => {
  525. const item = this.pickerData.find((option) => option.value === value);
  526. return item ? item.label : value; // 如果找不到,返回 value
  527. })
  528. .join(", ");
  529. }
  530. this.questionList[i].checkUserList=this.questionList[i].checkUserList.join(",");
  531. }
  532. this.inputForm.dzfQuestionDetilDTOList=this.questionList;
  533. this.checkinput();
  534. },
  535. checkinput(){
  536. if(this.hasDuplicateQName(this.questionList)){
  537. uni.showToast({
  538. icon: 'none',
  539. title: '问题名称不能重复!'
  540. });
  541. }else{
  542. uni.showLoading()
  543. loginService.save2OpRecord(this.inputForm).then(({
  544. data
  545. }) => {
  546. uni.hideLoading();
  547. uni.showToast({
  548. title: "提交成功!",
  549. icon: "success"
  550. });
  551. uni.navigateTo({
  552. url: '/pages/question/questionList'
  553. })
  554. }).catch((e) => {
  555. uni.hideLoading();
  556. })
  557. }
  558. },
  559. hasDuplicateQName(array) {
  560. const seen = new Set();
  561. for (const item of array) {
  562. if (seen.has(item.qname)) {
  563. return true; // 找到重复的 qName
  564. }
  565. seen.add(item.qname);
  566. }
  567. return false; // 没有重复的 qName
  568. }
  569. }
  570. }
  571. </script>
  572. <style>
  573. /* .file-title) {
  574. font-size: 17px !important;
  575. } */
  576. input,textarea{
  577. color: #8799a3;
  578. }
  579. .input1{
  580. background-color: #ffffff;
  581. padding: 1upx 40upx;
  582. display: flex;
  583. align-items: center;
  584. padding-top: 20upx;
  585. border-bottom: 1px solid #eee;
  586. }
  587. .input1 .title {
  588. text-align: justify;
  589. padding-right: 30upx;
  590. font-size: 30upx;
  591. position: relative;
  592. height: 60upx;
  593. line-height: 60upx;
  594. border: ;
  595. }
  596. .title2{
  597. width: 75%;
  598. text-align: left;
  599. }
  600. .input2 {
  601. flex: 1;
  602. font-size: 30upx;
  603. color: #555;
  604. padding-right: 20upx;
  605. width: 500rpx;
  606. }
  607. .uni-input{
  608. }
  609. .textbg{
  610. display: flex;
  611. background-color: white;
  612. padding-top: 29rpx;
  613. }
  614. .text12{
  615. width: 200rpx;
  616. margin-left: 30rpx;
  617. color: #000000;
  618. font-size: 29rpx;
  619. }
  620. .text2{
  621. flex: 1;
  622. color: #000000;
  623. font-size: 30rpx;
  624. padding-bottom: 2rpx;
  625. }
  626. .text22{
  627. flex: 1;
  628. color: #666666;
  629. font-size: 29rpx;
  630. padding-bottom: 2rpx;
  631. align-self: flex-end;
  632. }
  633. .titlebg2{
  634. display: flex;
  635. background-color: white;
  636. padding-left: 22rpx;
  637. padding-top: 35rpx;
  638. padding-bottom: 25rpx;
  639. margin-bottom: 2rpx;
  640. }
  641. .titlet1{
  642. width: 7rpx;
  643. margin-top: 7rpx;
  644. margin-bottom: 7rpx;
  645. background-color: #2752eb;
  646. margin-right: 8rpx;
  647. }
  648. .titlet2{
  649. font-weight: 800;
  650. color: #2752eb;
  651. }
  652. .titlebb{
  653. color: #000000;
  654. font-weight: 800;
  655. padding-left: 40rpx;
  656. background-color: #ffffff;
  657. padding-top: 20rpx;
  658. }
  659. .flexC{
  660. display: flex;
  661. }
  662. .bt1{
  663. flex:1;
  664. margin: 30rpx;
  665. }
  666. .bt2{
  667. flex:1;
  668. margin: 30rpx;
  669. }
  670. .radiog{
  671. flex:1;
  672. margin: 10rpx;
  673. }
  674. .uni-list-cell{
  675. display: flex;
  676. }
  677. .cu-form-group2{
  678. background-color: #ffffff;
  679. padding: 0.5px 22px;
  680. display: flex;
  681. align-items: center;
  682. min-height: 44px;
  683. }
  684. .modal-content {
  685. padding: 20px;
  686. }
  687. .record-item {
  688. background-color: #fff;
  689. border-radius: 10rpx;
  690. padding: 20rpx;
  691. box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
  692. display: flex;
  693. flex-direction: column;
  694. }
  695. .record-p1{
  696. width: 10px;
  697. height: 10px;
  698. border-radius: 100px;
  699. background-color: rgb(60, 156, 255);
  700. }
  701. .record-p2{
  702. width: 10px;
  703. height: 10px;
  704. border-radius: 100px;
  705. background-color: rgb(150, 151, 153);
  706. }
  707. .record-x1{
  708. width: 20rpx;
  709. height: 100%;
  710. background-color: rgb(150, 151, 153);
  711. }
  712. .record-name {
  713. font-size: 32rpx;
  714. font-weight: bold;
  715. margin-bottom: 10rpx;
  716. margin-left: 10rpx;
  717. }
  718. .record-time {
  719. font-size: 28rpx;
  720. margin-left: 10rpx;
  721. color: #666;
  722. margin-bottom: 10rpx;
  723. }
  724. .submit-time {
  725. font-size: 14px;
  726. color: #666;
  727. margin-left: 28rpx;
  728. position: relative;
  729. display: flex;
  730. flex-direction:column;
  731. }
  732. .submit-time::before {
  733. content: '';
  734. position: absolute;
  735. left: -10px;
  736. top: 0;
  737. height: 100%;
  738. width: 1px;
  739. background-color:rgb(150, 151, 153);
  740. }
  741. </style>