khDetail.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="form" :model="form" :rules="rules" class="baseinfoClass" >
  4. <el-form-item style="margin-left: -3vw;">
  5. <div class="text-with-line">基本信息</div>
  6. </el-form-item>
  7. <el-form-item>
  8. <el-col :span="6">
  9. <span>企业属性:{{baseInfoData.companyAttributes}}</span>
  10. </el-col>
  11. <el-col :span="6">
  12. <span>客户编码:{{baseInfoData.companyCode}}</span>
  13. </el-col>
  14. <el-col :span="6">
  15. <span>客户名称:{{baseInfoData.companyName}}</span>
  16. </el-col>
  17. <el-col :span="6">
  18. <span>纳税人登记号:{{baseInfoData.taxpayerid}}</span>
  19. </el-col>
  20. </el-form-item>
  21. <el-form-item style="margin-left: -3vw;">
  22. <div class="text-with-line">证照信息</div>
  23. </el-form-item>
  24. <el-form-item >
  25. <el-col :span="2" v-for="item in items1" :key="'index1-'+item.id">
  26. <el-tag
  27. :label="item.id"
  28. :value="item.licenseName"
  29. :type="item.serviceState == '0' ? 'info' : 'danger'"
  30. style="width: 7.5vw; text-align: center; height: 4vh; line-height:4vh;"
  31. effect="plain">
  32. {{ item.licenseName }}
  33. </el-tag>
  34. </el-col>
  35. </el-form-item>
  36. <el-form-item >
  37. <el-col :span="2" v-for="item in items2" :key="'index1-'+item.id">
  38. <el-tag
  39. :label="item.id"
  40. :value="item.licenseName"
  41. :type="item.serviceState == '0' ? 'info' : 'danger'"
  42. style="width: 7.5vw; text-align: center; height: 4vh; line-height:4vh;"
  43. effect="plain">
  44. {{ item.licenseName }}
  45. </el-tag>
  46. </el-col>
  47. </el-form-item>
  48. <el-form-item>
  49. <el-col :span="5">
  50. <span>
  51. 证照分类:
  52. <el-select v-model="form.licenseType" clearable placeholder="请选择" :disabled="isFlag">
  53. <el-option
  54. v-for="item in options"
  55. :key="'index3-'+item.value"
  56. :label="item.label"
  57. :value="item.value">
  58. </el-option>
  59. </el-select>
  60. </span>
  61. </el-col>
  62. <el-col :span="12">
  63. <span>证照编号:<el-input v-model="form.licenseNumber" placeholder="请输入证照编号" style="width: 60%" :disabled="isFlag"/></span>
  64. </el-col>
  65. <el-col :span="6">
  66. <span>证照名称:<el-input v-model="form.licenseName" placeholder="请输入证照名称" style="width: 60%" :disabled="isFlag"/></span>
  67. </el-col>
  68. </el-form-item>
  69. <el-form-item>
  70. <el-col :span="5">
  71. <span>颁证机构:<el-input v-model="form.licenseCompany" placeholder="请输入颁证机构" style="width: 60%" :disabled="isFlag"/></span>
  72. </el-col>
  73. <el-col :span="6">
  74. <span>颁发日期:<el-input v-model="form.licenseDate" placeholder="请输入颁发日期" style="width: 60%" :disabled="isFlag"/></span>
  75. </el-col>
  76. <el-col :span="6">
  77. <span>经营方式:<el-input v-model="form.businessType" placeholder="请输入经营方式" style="width: 60%" :disabled="isFlag"/></span>
  78. </el-col>
  79. <el-col :span="6">
  80. <span>经营范围:<el-input v-model="form.businessScope" placeholder="请输入经营范围" style="width: 60%" :disabled="isFlag"/></span>
  81. </el-col>
  82. </el-form-item>
  83. <el-form-item>
  84. <el-col :span="5">
  85. <span>
  86. 有效期至:
  87. <el-date-picker
  88. :disabled="isFlag"
  89. v-model="form.validUntil"
  90. type="date"
  91. placeholder="选择日期">
  92. </el-date-picker>
  93. </span>
  94. </el-col>
  95. <el-col :span="6">
  96. <span>预警天数:<el-input v-model="form.warningDays" placeholder="请输入预警天数" style="width: 60%" :disabled="isFlag"/></span>
  97. </el-col>
  98. <el-col :span="12">
  99. <span>备注:<el-input v-model="form.remark" placeholder="请输入备注" style="width: 60%" :disabled="isFlag"/></span>
  100. </el-col>
  101. </el-form-item>
  102. <el-form-item class="container">
  103. <el-button type="primary" style="margin-right: 4vw;" @click="upload()" :disabled="isFlag">上传证照</el-button>
  104. </el-form-item>
  105. <el-form-item style="margin-left: -3vw; border: 5px solid #fff; padding: 5px; padding-top: 15px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);">
  106. <el-col :span="3" v-for="imgs in imgList" :key="'index4-'+imgs.id" style="border-right: 1px solid #ebeef5;">
  107. <el-image
  108. :src="imgs.filepath"
  109. :preview-src-list="imgs.srcList"
  110. style="width: 165px; height: 165px; margin-left: 1.5vw;"
  111. >
  112. </el-image>
  113. </el-col>
  114. </el-form-item>
  115. <el-form-item style="margin-left: -3vw;">
  116. <div class="text-with-line">经营范围</div>
  117. </el-form-item>
  118. <el-form-item class="container">
  119. <el-button type="danger" style="margin-right: 4vw;" @click="addTable" :disabled="isFlag">新增经营范围</el-button>
  120. </el-form-item>
  121. <el-table
  122. :data="tableData"
  123. highlight-current-row
  124. style="width: 100%; margin-left: -2vw; text-align: center;">
  125. <el-table-column
  126. type="index"
  127. width="50">
  128. </el-table-column>
  129. <el-table-column
  130. property="scopeLevel"
  131. label="范围层级"
  132. width="240">
  133. <template slot-scope="scope">
  134. <el-input v-model="scope.row.scopeLevel" placeholder="请输入范围层级" :disabled="isFlag"></el-input>
  135. </template>
  136. </el-table-column>
  137. <el-table-column
  138. property="code"
  139. label="编码"
  140. width="360">
  141. <template slot-scope="scope">
  142. <el-input v-model="scope.row.code" placeholder="请输入编码" :disabled="isFlag"></el-input>
  143. </template>
  144. </el-table-column>
  145. <el-table-column
  146. property="name"
  147. label="名称"
  148. width="360">
  149. <template slot-scope="scope">
  150. <el-input v-model="scope.row.name" placeholder="请输入名称" :disabled="isFlag"></el-input>
  151. </template>
  152. </el-table-column>
  153. <el-table-column
  154. property="remark"
  155. label="备注"
  156. width="360">
  157. <template slot-scope="scope">
  158. <el-input v-model="scope.row.remark" placeholder="请输入备注" :disabled="isFlag"></el-input>
  159. </template>
  160. </el-table-column>
  161. <el-table-column
  162. label="操作">
  163. <template slot-scope="scope">
  164. <el-button type="danger" icon="el-icon-delete" @click="deleteTable(scope.row)" :disabled="isFlag"></el-button>
  165. </template>
  166. </el-table-column>
  167. </el-table>
  168. <el-form-item>
  169. <div class="button-container">
  170. <el-button type="danger" @click="qx" >取消</el-button>
  171. <el-button type="danger" @click="tj" v-show="!isFlag">提交</el-button>
  172. <el-button type="danger" @click="bc" v-show="!isFlag">保存</el-button>
  173. </div>
  174. </el-form-item>
  175. </el-form>
  176. <el-dialog
  177. title="文件上传"
  178. :visible.sync="dialogVisible"
  179. width="30%"
  180. :before-close="handleClose">
  181. <el-upload
  182. list-type="picture"
  183. class="upload-demo"
  184. :action="uploadUrl"
  185. :on-success="handleSuccess"
  186. :on-remove="handleRemove"
  187. :file-list="fileList">
  188. <i class="el-icon-upload"></i>
  189. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  190. </el-upload>
  191. <span slot="footer" class="dialog-footer">
  192. <el-button @click="canclUpload">取 消</el-button>
  193. <el-button type="primary" @click="submitUpload">确 定</el-button>
  194. </span>
  195. </el-dialog>
  196. </div>
  197. </template>
  198. <script>
  199. import { getToken } from '@/utils/auth'
  200. import { zjCompanyInfo, byCompanyCode, zjLicenseInfo, byLicenseId } from "@/api/qualityControl/qualityControl";
  201. export default {
  202. name: "qualityControlDetail",
  203. data() {
  204. return {
  205. isFlag: false,
  206. form: {
  207. xxx: '2'
  208. },
  209. rules: {},
  210. baseInfoData: {
  211. xxx: '1'
  212. },
  213. // 上传
  214. dialogVisible: false,
  215. // action
  216. uploadUrl:
  217. process.env.NODE_ENV == "development"
  218. ? "/drp-file/document-center/fastdfs/upload"
  219. : "/document-center/fastdfs/upload",
  220. // token
  221. headers: {
  222. Authorization: 'Bearer ' + getToken()
  223. },
  224. // 主表ID
  225. id: '',
  226. items1: [
  227. ],
  228. items2: [
  229. ],
  230. options: [{
  231. value: '选项1',
  232. label: '黄金糕'
  233. }, {
  234. value: '选项2',
  235. label: '双皮奶'
  236. }, {
  237. value: '选项3',
  238. label: '蚵仔煎'
  239. }, {
  240. value: '选项4',
  241. label: '龙须面'
  242. }, {
  243. value: '选项5',
  244. label: '北京烤鸭'
  245. }],
  246. value: '',
  247. value1: '',
  248. imgList: [
  249. {
  250. id: '1',
  251. filename: 'AAA',
  252. filepath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
  253. srcList: [
  254. 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
  255. ]
  256. },
  257. {
  258. id: '2',
  259. filename: 'BBB',
  260. filepath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
  261. srcList: [
  262. 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
  263. ]
  264. }
  265. ],
  266. tableData: [{
  267. id:'1',
  268. one: '2016-05-02',
  269. two: '王1虎',
  270. three: '上海市普陀区金沙江路 1518 弄',
  271. four: '1123'
  272. }, {
  273. id:'2',
  274. one: '2016-05-02',
  275. two: '王2虎',
  276. three: '上海市普陀区金沙江路 1518 弄',
  277. four: '1123'
  278. }],
  279. companyCode: '',
  280. licenseNumber: '',
  281. fileList: [],
  282. };
  283. },
  284. watch: {
  285. },
  286. created() {
  287. this.companyCode = this.$route.query.companyCode;
  288. this.licenseNumber = this.$route.query.licenseNumber;
  289. if(this.$route.query.isFlag == 'true'){
  290. this.isFlag = true;
  291. }else{
  292. this.isFlag = false;
  293. }
  294. zjCompanyInfo(this.companyCode).then(response => {
  295. if(response.code == 200){
  296. console.log("A1:::" + JSON.stringify(response.data))
  297. this.baseInfoData = response.data;
  298. }
  299. });
  300. byCompanyCode(this.companyCode).then(response => {
  301. if(response.code == 200){
  302. console.log("A2:::" + JSON.stringify(response.data))
  303. if(response.data.length>10){
  304. this.items1 = response.data.slice(0,10)
  305. this.items2 = response.data.slice(10)
  306. }else{
  307. this.items1 = response.data
  308. }
  309. }
  310. });
  311. zjLicenseInfo(this.licenseNumber).then(response => {
  312. if(response.code == 200){
  313. console.log("A3:::" + JSON.stringify(response.data))
  314. this.form = response.data
  315. }
  316. });
  317. byLicenseId(this.licenseNumber).then(response => {
  318. if(response.code == 200){
  319. console.log("A4:::" + JSON.stringify(response.data))
  320. this.tableData = response.data
  321. }
  322. });
  323. },
  324. methods: {
  325. upload(){
  326. this.fileList = [];
  327. this.imgList.forEach(element => {
  328. this.fileList.push({
  329. 'id': element.id,
  330. 'name':element.filename,
  331. 'url': element.filepath
  332. })
  333. });
  334. this.dialogVisible = true;
  335. },
  336. handleClose(done) {
  337. this.$confirm('确认关闭?')
  338. .then(_ => {
  339. done();
  340. })
  341. .catch(_ => {});
  342. },
  343. handleSuccess(e){
  344. this.fileList.push({
  345. 'id': e.id,
  346. 'name':e.filename,
  347. 'url': process.env.NODE_ENV == "development"
  348. ? "https://dev-sy.derom.com/document-center/minio/"+e.filepath
  349. : "https://sy.derom.com/document-center/minio/"+e.filepath
  350. })
  351. },
  352. canclUpload(){
  353. this.dialogVisible = false;
  354. },
  355. submitUpload(){
  356. this.imgList = [];
  357. this.fileList.forEach(element => {
  358. let arr = [];
  359. arr.push(element.url);
  360. this.imgList.push({
  361. 'id': element.id,
  362. 'filename': element.name,
  363. 'filepath': element.url,
  364. 'srcList': arr
  365. })
  366. });
  367. this.dialogVisible = false;
  368. },
  369. handleRemove(file, fileList) {
  370. this.fileList = [];
  371. fileList.forEach(element => {
  372. this.fileList.push({
  373. 'id': element.id,
  374. 'name':element.name,
  375. 'url': element.url
  376. })
  377. });
  378. },
  379. addTable() {
  380. const newRow = { id: this.randomLong(), one: '', two: '', three: '', four: '' };
  381. this.tableData.push(newRow);
  382. },
  383. deleteTable(e) {
  384. if(this.tableData.length === 1){
  385. this.$message({
  386. message: '当前行无法删除, 请至少保留一条适用科室信息!',
  387. type: 'warning'
  388. });
  389. return;
  390. }
  391. this.tableData = this.tableData.filter(row =>
  392. row.id != e.id
  393. );
  394. },
  395. randomLong() {
  396. const min = Number.MIN_SAFE_INTEGER;
  397. const max = Number.MAX_SAFE_INTEGER;
  398. // 50% chance of a negative number
  399. const isNegative = Math.random() < 0.5;
  400. const randomValue = Math.random() * (max - min) + min;
  401. return isNegative ? Math.round(randomValue) : Math.round(randomValue) * -1;
  402. },
  403. qx(){
  404. this.$router.go(-1)
  405. },
  406. tj(){
  407. },
  408. bc(){
  409. }
  410. },
  411. };
  412. </script>
  413. <style>
  414. .baseinfoClass {
  415. margin-left: 4vw;
  416. }
  417. .text-with-line {
  418. position: relative;
  419. font-size: 16px;
  420. color: #333;
  421. padding-bottom: 5px; /* 确保条线在文字下方 */
  422. }
  423. .text-with-line::after {
  424. content: '';
  425. position: absolute;
  426. left: 0;
  427. bottom: 0;
  428. width: 100%; /* 条线的宽度 */
  429. height: 2px; /* 条线的高度 */
  430. background: #000; /* 条线的颜色 */
  431. }
  432. .container {
  433. display: flex;
  434. justify-content: flex-end; /* 这会把子元素放在容器的右边 */
  435. }
  436. .button-container {
  437. position: fixed; /* 使用fixed定位,使得容器始终相对于浏览器窗口 */
  438. top: 10px; /* 距离顶部10像素 */
  439. right: 60px; /* 距离右侧10像素 */
  440. z-index: 1000; /* 设置一个较高的z-index确保按钮在其他内容之上 */
  441. }
  442. </style>