From 4d685f52c0ab2ebd4614ce4c2639e31b9eb68bf5 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 01 十一月 2024 14:21:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1

---
 company/src/views/business/solutions.vue                         |  162 ++++-----
 company/src/views/business/solutionsBase.vue                     |  134 +++++++
 company/src/api/business/solutionsBase.js                        |   37 ++
 company/src/components/business/OperaSolutionsBaseWindow.vue     |  390 ++++++++++++++++++++++
 company/src/components/business/OperaSolutionsBaseDescWindow.vue |  283 ++++++++++++++++
 company/src/views/business/insurance.vue                         |    4 
 company/src/views/login.vue                                      |    2 
 7 files changed, 918 insertions(+), 94 deletions(-)

diff --git a/company/src/api/business/solutionsBase.js b/company/src/api/business/solutionsBase.js
new file mode 100644
index 0000000..ed0f114
--- /dev/null
+++ b/company/src/api/business/solutionsBase.js
@@ -0,0 +1,37 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/solutionsBase/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/solutionsBase/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/solutionsBase/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/solutionsBase/delete/${id}`)
+}
+
+// 鏍规嵁id鏌ヨ
+export function solutionsBaseId (id) {
+  return request.get(`/business/solutionsBase/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/solutionsBase/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/company/src/components/business/OperaSolutionsBaseDescWindow.vue b/company/src/components/business/OperaSolutionsBaseDescWindow.vue
new file mode 100644
index 0000000..852982d
--- /dev/null
+++ b/company/src/components/business/OperaSolutionsBaseDescWindow.vue
@@ -0,0 +1,283 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        text="淇敼"
+        :withFooter="userInfo.type !== 1"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="$refs.operaSolutionsWindow.open('缂栬緫鏂规', form)"
+    >
+        <div class="info">
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鏂规鍚嶇О锛�</div>
+                    <div class="info_list_item_val">{{form.name}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">淇濋櫓鍏徃锛�</div>
+                    <div class="info_list_item_val">{{form.insuranceName}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵夸繚鍏徃锛�</div>
+                    <div class="info_list_item_val">{{form.companyName}}</div>
+                </div>
+<!--                <div class="info_list_item">-->
+<!--                    <div class="info_list_item_label">鎶曚繚鍛ㄦ湡锛�</div>-->
+<!--                    <div class="info_list_item_val">1鏈�</div>-->
+<!--                </div>-->
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵规敼鎻愰啋鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{form.correctWarnTime}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵瑰鐢熸晥锛�</div>
+                    <div class="info_list_item_val">{{form.addValidDays||0}} 澶�</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵瑰噺鐢熸晥锛�</div>
+                    <div class="info_list_item_val">{{form.delOnlyReplace === 1 ? '鏄�' : '鍚�'}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵规敼鏀寔锛�</div>
+                    <div class="info_list_item_val">
+                        <span style="margin-right: 50px">鍔犱繚 <i  :class="form.canAdd ==1?'el-icon-circle-check':'el-icon-circle-close'" :style="form.canAdd ==1?'color:green;font-weight:bold':'color:red;font-weight:bold'"></i></span>
+                        <span  style="margin-right: 50px">鍑忎繚  <i   :class="form.canReduce ==1?'el-icon-circle-check':'el-icon-circle-close'" :style="form.canReduce ==1?'color:green;font-weight:bold':'color:red;font-weight:bold'"></i></span>
+                        <span>鏇存崲娲鹃仯鍗曚綅 <i   :class="form.canChangeUnit ==1?'el-icon-circle-check':'el-icon-circle-close'" :style="form.canChangeUnit ==1?'color:green;font-weight:bold':'color:red;font-weight:bold'"></i></span>
+                    </div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鎵瑰噺浠呮敮鎸佹浛鎹細</div>
+                    <div class="info_list_item_val">鏄�</div>
+                </div>
+            </div>
+            <el-table
+                :data="form.worktypeList"
+                border
+                style="width: 100%; margin-bottom: 20px;">
+                <el-table-column
+                        label="搴忓彿"
+                        align="center"
+                        width="80">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="worktypeName"
+                        align="center"
+                        label="宸ョ鍚嶇О">
+                </el-table-column>
+            </el-table>
+            <div class="info_agree">
+                <div class="info_agree_label">鐗瑰埆绾﹀畾锛�<div v-html="form.specialAgreement"></div></div>
+                <div class="info_agree_label">鐗瑰埆璇存槑锛�<div v-html="form.specialInfo"></div></div>
+                <div class="info_agree_label">鍏朵粬璇存槑锛�<div v-html="form.ortherInfo"></div></div>
+            </div>
+        </div>
+        <!-- 淇敼 -->
+        <OperaSolutionsWindow ref="operaSolutionsWindow" @success="callback"/>
+        <OperaPdfViewerWindow ref="OperaPdfViewerWindow"  />
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
+  import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
+  import { solutionsBaseId } from '@/api/business/solutionsBase'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'OperaSolutionsBaseDescWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, OperaPdfViewerWindow,OperaSolutionsWindow },
+    data () {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          name: '',
+          companyName: '',
+          insuranceId: '',
+          validType: 0,
+          type: 0,
+          minAge: '',
+          maxAge: '',
+          price: '',
+          timeUnit: '',
+          insureCycle: '',
+          shopName: '',
+          insureCycleUnit: '',
+          validTypeNum: '',
+          email: '',
+          canReduce: 0,
+          canChangeUnit: 0,
+          addValidDays: 0,
+          delValidDays: 0,
+          delOnlyReplace: 0,
+          canAdd: 0,
+          correctWarnTime: '',
+          specialAgreement: '',
+          specialInfo: '',
+          ortherInfo: '',
+          insuranceName: '',
+          signKeyword: '',
+          worktypeList: [],
+          worktypeIdList: []
+        }
+      }
+    },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    created () {
+      this.config({
+        api: '/business/solutionsBase',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+      open (title, target) {
+        this.title = title
+        this.visible = true
+        this.form = {
+          id: null,
+          name: '',
+          companyName: '',
+          insuranceId: '',
+          validType: 0,
+          type: 0,
+          minAge: '',
+          maxAge: '',
+          price: '',
+          timeUnit: '',
+          insureCycle: '',
+          shopName: '',
+          insureCycleUnit: '',
+          validTypeNum: '',
+          email: '',
+          specialAgreement: '',
+          specialInfo: '',
+          ortherInfo: '',
+          fanganFile: null,
+          canReduce: 0,
+          canChangeUnit: 0,
+          addValidDays: 0,
+          correctWarnTime: '',
+          delValidDays: 0,
+          delOnlyReplace: 0,
+          canAdd: 0,
+          insuranceName: '',
+          signKeyword: '',
+          worktypeList: [],
+          worktypeIdList: []
+        }
+
+        this.$nextTick(() => {
+          for (const key in this.form) {
+            this.form[key] = target[key]
+          }
+          this.getDetails()
+        })
+      },
+      openFile (url) {
+        setTimeout(() => {
+          this.$refs.OperaPdfViewerWindow.open('鏂规纭涔�',url)
+          // window.open(url)
+        }, 500)
+      },
+      getDetails () {
+        solutionsBaseId(this.form.id)
+          .then(res => {
+            for (const key in this.form) {
+              this.form[key] = res[key]
+            }
+            if (res.worktypeList) {
+              this.form.worktypeIdList = res.worktypeList.map(item => {
+                return {
+                  worktypeId: item.worktypeId
+                }
+              })
+            }
+          })
+      },
+      callback () {
+        this.$emit('success')
+        this.visible = false
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    .info {
+        width: 100%;
+        .info_agree {
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            margin-top: 20px;
+            .info_agree_label {
+                font-size: 14px;
+                font-weight: 500;
+                color: #000000;
+                margin-top: 5px;
+            }
+            .info_agree_val {
+                font-size: 14px;
+                font-weight: 500;
+                color: #000000;
+                margin-top: 5px;
+            }
+        }
+        .info_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 20px;
+            span {
+                font-size: 18px;
+                font-weight: 500;
+                color: #000000;
+            }
+        }
+        .info_fwb {
+            width: 100%;
+            margin-top: 20px;
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            .info_list_item {
+                width: 50%;
+                display: flex;
+                align-items: start;
+                margin-bottom: 20px;
+                .info_list_item_label {
+
+                    flex-shrink: 0;
+                }
+                .info_list_item_val {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    .image {
+                        width: 100px;
+                        height: 100px;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                        overflow: hidden;
+                        img {
+                            width: 100%;
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/OperaSolutionsBaseWindow.vue b/company/src/components/business/OperaSolutionsBaseWindow.vue
new file mode 100644
index 0000000..24ea717
--- /dev/null
+++ b/company/src/components/business/OperaSolutionsBaseWindow.vue
@@ -0,0 +1,390 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-form :model="form" ref="form" :rules="rules">
+            <el-form-item label="鏂规鍚嶇О" prop="name">
+                <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim/>
+            </el-form-item>
+            <el-form-item label="淇濋櫓鍏徃" prop="insuranceId">
+                <el-select v-model="form.insuranceId" filterable @change="getAllWorktype1" placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in company"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鎵夸繚鍏徃" prop="companyName">
+                <el-input v-model="form.companyName" placeholder="璇疯緭鍏�" v-trim/>
+            </el-form-item>
+            <el-form-item label="鎶曚繚骞撮緞" prop="minAge">
+                <div style="display: flex; align-items: center;">
+                    <el-select v-model="form.minAge" style="flex: 1;" placeholder="璇烽�夋嫨">
+                        <el-option
+                            v-for="item in 80"
+                            :key="item"
+                            :label="item"
+                            :value="item">
+                        </el-option>
+                    </el-select>
+                    <span style="margin: 0 30px;">鑷�</span>
+                    <el-select v-model="form.maxAge" style="flex: 1;" placeholder="璇烽�夋嫨">
+                        <el-option
+                            v-for="item in 80"
+                            :key="item"
+                            :label="item"
+                            :value="item">
+                        </el-option>
+                    </el-select>
+                </div>
+            </el-form-item>
+            <el-form-item label="鐢熸晥鏃堕棿" prop="validTypeNum">
+                <div style="width: 100%; display: flex; align-items: center;">
+                    <div style="flex-shrink: 0;">
+                        <el-radio-group v-model="form.validType" @change="changeValidType">
+                            <el-radio :label="0">鏃ュ悗鐢熸晥</el-radio>
+                            <el-radio :label="1">娆℃湀鐢熸晥</el-radio>
+                        </el-radio-group>
+                    </div>
+                    <el-input style="margin-left: 20px;" type="number" v-model="form.validTypeNum"   placeholder="璇疯緭鍏ュ欢杩熷ぉ鏁�" v-if="form.validType === 0"></el-input>
+                </div>
+            </el-form-item>
+            <el-form-item label="鎵规敼鏀寔" prop="canAdd">
+                <div style="width: 100%; display: flex; align-items: center;">
+                    <el-checkbox :true-label="1" :false-label="0" v-model="form.canAdd">鍔犱繚</el-checkbox>
+                    <el-checkbox :true-label="1" :false-label="0" v-model="form.canReduce">鍑忎繚</el-checkbox>
+                    <el-checkbox :true-label="1" :false-label="0" v-model="form.canChangeUnit">鏇存崲娲鹃仯鍗曚綅</el-checkbox>
+                </div>
+            </el-form-item>
+            <el-form-item label="鎵瑰噺浠呮敮鎸佹浛鎹紙鍑忎繚鎵规敼浠呮敮鎸佹浛鎹汉鍛樺嵆鍑忎繚浜哄憳灏戜簬鍔犱繚浜哄憳锛�" prop="delOnlyReplace">
+                <div style="width: 100%; display: flex; align-items: center;">
+                    <el-radio-group v-model="form.delOnlyReplace">
+                        <el-radio :label="1">鏄�</el-radio>
+                        <el-radio :label="0">鍚�</el-radio>
+                    </el-radio-group>
+                </div>
+            </el-form-item>
+            <el-form-item label="鎵瑰鐢熸晥锛堝ぉ鏁帮級" prop="addValidDays" v-if="form.delOnlyReplace != 1">
+                <div style="width: 100%; display: flex; align-items: center;">
+                    <el-input style="margin-left: 0px;" type="number" v-model="form.addValidDays"   placeholder="璇疯緭鍏ユ壒澧炵敓鏁堟椂闂达紙澶╂暟锛�" ></el-input>
+                </div>
+            </el-form-item>
+            <el-form-item label="鎵瑰噺鐢熸晥锛堝ぉ鏁帮級" prop="delValidDays">
+                <div style="width: 100%; display: flex; align-items: center;">
+                    <el-input style="margin-left: 0px;" type="number" v-model="form.delValidDays"   placeholder="璇疯緭鍏ユ壒鍑忕敓鏁堟椂闂达紙澶╂暟锛�" ></el-input>
+                </div>
+            </el-form-item>
+            <el-form-item label="鎵规敼鎻愰啋鏃堕棿" prop="correctWarnTime">{{form.correctWarnTime}}
+                <el-time-picker
+                    value-format="HH:hh:mm"
+                    v-model="form.correctWarnTime"
+                    placeholder="璇烽�夋嫨鎵规敼鎻愰啋鏃堕棿">
+                </el-time-picker>
+            </el-form-item>
+            <el-button type="primary" @click="add" style="margin-bottom: 10px;">娣诲姞宸ョ</el-button>
+            <el-table
+                :data="form.worktypeIdList"
+                border
+                style="width: 100%; margin-bottom: 20px;">
+                <el-table-column
+                    label="搴忓彿"
+                    align="center"
+                    width="80">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    label="鎵�灞炲伐绉�">
+                    <template slot-scope="{row}">
+                        <el-select filterable v-model="row.worktypeId" placeholder="璇烽�夋嫨">
+                            <el-option
+                                v-for="item in typeWork"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    label="鎿嶄綔"
+                    align="center"
+                    width="100">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-form-item label="鐗瑰埆绾﹀畾" prop="specialAgreement">
+                <RichEditor :richData="form.specialAgreement" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor" :readonly="false"/>
+            </el-form-item>
+            <el-form-item label="鐗瑰埆璇存槑" prop="specialInfo">
+                <RichEditor :richData="form.specialInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor1" :readonly="false"/>
+            </el-form-item>
+            <el-form-item label="鍏朵粬璇存槑" prop="ortherInfo">
+                <RichEditor :richData="form.ortherInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor2" :readonly="false"/>
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { all } from '@/api/business/insurance'
+  import { all as allWorktype } from '@/api/business/worktype'
+  import { solutionsBaseId } from '@/api/business/solutionsBase'
+  import { pageAll as shopList } from '@/api/business/company'
+  import UploadFile from '@/components/common/UploadFile'
+  import { numRule } from '@/utils/form'
+  import RichEditor from '@/components/common/RichEditor'
+  export default {
+    name: 'OperaSolutionsBaseWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, UploadFile, RichEditor },
+    data () {
+      var validType = (rule, value, callback) => {
+        if (this.form.validType === 0 && !value) {
+          return callback(new Error('寤惰繜澶╂暟涓嶈兘涓虹┖'))
+        } else if (this.form.validType === 0 && !/^[0-9]*[1-9][0-9]*$/.test(value)) {
+          return callback(new Error('寤惰繜澶╂暟鍙兘涓烘鏁存暟'))
+        }
+        callback()
+      }
+      var canAddFun = (rule, value, callback) => {
+        if (!this.form.canAdd && !form.canReduce && !form.canChangeUnit) {
+          return callback(new Error('鎵规敼鏀寔涓嶈兘涓虹┖'))
+        }
+        callback()
+      }
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          name: '',
+          companyName: '',
+          insuranceId: '',
+          validType: 0,
+          minAge: '',
+          maxAge: '',
+          specialAgreement: '',
+          specialInfo: '',
+          ortherInfo: '',
+          validTypeNum: '',
+          canReduce: 0,
+          canChangeUnit: 0,
+          addValidDays: 0,
+          delValidDays: 0,
+          delOnlyReplace: 0,
+          canAdd: 0,
+          correctWarnTime: '',
+          worktypeIdList: [{ worktypeId: '' }]
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [
+            { required: true, message: '璇疯緭鍏ユ柟妗堝悕绉�' }
+          ],
+          delOnlyReplace: [
+            { required: true, message: '璇烽�夋嫨' }
+          ],
+          addValidDays: [
+            { required: true, validator: numRule }
+          ],
+          delValidDays: [
+            { required: true, validator: numRule }
+          ],
+          insuranceId: [
+            { required: true, message: '璇烽�夋嫨淇濋櫓鍏徃' }
+          ],
+          companyName: [
+            { required: true, message: '璇疯緭鍏ユ壙淇濆叕鍙�' }
+          ],
+          minAge: [
+            { required: true, message: '璇烽�夋嫨鎶曚繚骞撮緞' }
+          ],
+          validTypeNum: [
+            { required: true, validator: validType }
+          ],
+          correctWarnTime: [
+            { required: true, message: '璇疯緭鍏ユ壒鏀规彁閱掓椂闂�' }
+          ],
+          canAdd: [
+            { required: true, validator: canAddFun }
+          ]
+        },
+        shops: [],
+        company: [],
+        typeWork: []
+      }
+    },
+    created () {
+      this.config({
+        api: '/business/solutionsBase',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+      getWangedditor(val){
+        this.form.specialAgreement = val;
+      },
+      getWangedditor1(val){
+        this.form.specialInfo = val;
+      },
+      getWangedditor2(val){
+        this.form.ortherInfo = val;
+      },
+
+      handNumberInput (value) {
+        const regex = /^[-+]?\d*$/
+        if (!regex.test(value)) {
+          // 濡傛灉杈撳叆鐨勪笉鏄暣鏁帮紝鍒欒缃负涓婁竴涓湁鏁堢殑鏁存暟鍊�
+          this.form.addValidDays = value.replace(/[^0-9]/g, '')
+          this.form.addValidDays = value.replace(/[^0-9]/g, '')
+          this.form.delValidDays = value.replace(/[^0-9]/g, '')
+        }
+      },
+      // 鍒囨崲鍏徃
+      getAllWorktype1 () {
+        this.form.worktypeIdList = [{ worktypeId: '' }]
+        this.getAllWorktype()
+      },
+      changeValidType(e) {
+        if (e === 1) {
+          this.form.validTypeNum = 0
+        } else {
+          this.form.validTypeNum = ''
+        }
+      },
+      // 纭鏂板缓/淇敼
+      confirm () {
+        const data = JSON.parse(JSON.stringify(this.form))
+        data.worktypeIdList = data.worktypeIdList.map(item => item.worktypeId)
+        data.correctWarnTime = data.correctWarnTime.substring(0, data.correctWarnTime.lastIndexOf(':'))
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            return
+          }
+          // 璋冪敤鏂板缓鎺ュ彛
+          this.isWorking = true
+          if (data.id == null || data.id === '') {
+            this.api.create(data)
+              .then(() => {
+                this.visible = false
+                this.$tip.apiSuccess('鏂板缓鎴愬姛')
+                this.$emit('success')
+              })
+              .catch(e => {
+                this.$tip.apiFailed(e)
+              })
+              .finally(() => {
+                this.isWorking = false
+              })
+          } else {
+            this.api.updateById(data)
+              .then(() => {
+                this.visible = false
+                this.$tip.apiSuccess('淇敼鎴愬姛')
+                this.$emit('success')
+              })
+              .catch(e => {
+                this.$tip.apiFailed(e)
+              })
+              .finally(() => {
+                this.isWorking = false
+              })
+          }
+        })
+      },
+      open (title, target) {
+        this.title = title
+        this.visible = true
+        this.form.maxAge = ''
+        this.form.validTypeNum = ''
+        this.form.canReduce = 0
+        this.form.canChangeUnit = 0
+        this.form.addValidDays = 0
+        this.form.delOnlyReplace = 0
+        this.form.delValidDays = 0
+        this.form.canAdd = 0
+        this.form.worktypeIdList = [{ worktypeId: '' }]
+        // this.$refs['$upload'].clearFiles()//鍒濆鍖栧鍏ョ粍浠�
+        this.allCompany()
+        this.allShops()
+        // 鏂板缓
+        if (target == null) {
+          this.$nextTick(() => {
+            this.$refs.form.resetFields()
+            this.form.maxAge = ''
+            this.form.validTypeNum = ''
+            this.form.fanganFile = null
+            this.form.worktypeIdList = [{ worktypeId: '' }]
+            this.form[this.configData['field.id']] = null
+          })
+          return
+        }
+        // 缂栬緫
+        this.$nextTick(() => {
+          solutionsBaseId(target.id)
+            .then(res => {
+              for (const key in this.form) {
+                this.form[key] = res[key]
+              }
+              this.form.correctWarnTime = `${this.form.correctWarnTime}:00`
+              console.log(this.form.correctWarnTime)
+              if (res.worktypeList) {
+                this.form.worktypeIdList = res.worktypeList.map(item => {
+                  return {
+                    worktypeId: item.worktypeId
+                  }
+                })
+              }
+              this.getAllWorktype()
+            })
+        })
+      },
+      // 鏌ヨ淇濋櫓鍏徃涓嬪叏閮ㄥ伐绉�
+      getAllWorktype () {
+        allWorktype({
+          insuranceId: this.form.insuranceId
+        }).then(res => {
+          this.typeWork = res
+        })
+      },
+
+      // 鏌ヨ鍏ㄩ儴淇濋櫓鍏徃
+      allCompany () {
+        all({ dataType: 2, status: 0 })
+          .then(res => {
+            console.log(res)
+            this.company = res
+          })
+      },
+      allShops () {
+        shopList({ type: 1, status: 0 })
+          .then(res => {
+            console.log(res)
+            this.shops = res
+          })
+      },
+      add () {
+        this.form.worktypeIdList.push({ worktypeId: '' })
+      },
+      dele (index) {
+        if (this.form.worktypeIdList.length === 1) {
+          this.$message.warning('鑷冲皯瑕佷繚鐣欎竴椤�')
+          return
+        }
+        this.form.worktypeIdList.splice(index, 1)
+      }
+    }
+  }
+</script>
diff --git a/company/src/views/business/insurance.vue b/company/src/views/business/insurance.vue
index fd66933..1c463d6 100644
--- a/company/src/views/business/insurance.vue
+++ b/company/src/views/business/insurance.vue
@@ -27,6 +27,10 @@
                     </template>
                 </el-table-column>
                 <el-table-column prop="name" label="淇濋櫓鍏徃" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="LOGO" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="鑻辨枃鍚嶇О" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="鑱旂郴浜�" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
                 <el-table-column label="鍚敤鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
                         <el-switch
diff --git a/company/src/views/business/solutions.vue b/company/src/views/business/solutions.vue
index 7fe6a82..2186280 100644
--- a/company/src/views/business/solutions.vue
+++ b/company/src/views/business/solutions.vue
@@ -5,18 +5,6 @@
             <el-form-item label="淇濋櫓鏂规" prop="name">
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="鍚敤鐘舵��" prop="status" v-if="userInfo.type !== 1">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="鍚敤" value="0"></el-option>
-                    <el-option label="绂佺敤" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="绫诲瀷" prop="type" >
-                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="鐩翠繚" value="0"></el-option>
-                    <el-option label="濮旀墭鎶曚繚" value="1"></el-option>
-                </el-select>
-            </el-form-item>
             <section>
                 <el-button type="primary" @click="search">鎼滅储</el-button>
                 <el-button @click="reset">閲嶇疆</el-button>
@@ -39,51 +27,39 @@
                         <span>{{scope.$index + 1}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="name" label="淇濋櫓鏂规" min-width="150px"></el-table-column>
-                <el-table-column prop="insuranceName" label="淇濋櫓鍏徃" min-width="100px"></el-table-column>
-                <el-table-column label="鎶曚繚骞撮緞" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span>{{row.minAge}}鑷硔{row.maxAge}}宀�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="鎶曚繚鐢熸晥鏃ユ湡" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.validType === 0">{{row.validTypeNum}}鏃ュ悗鐢熸晥</span>
-                        <span v-if="row.validType === 1">娆℃湀鐢熸晥</span>
-                    </template>
-                </el-table-column>
-<!--                <el-table-column prop="addValidDays"  label="鎵瑰鐢熸晥鏃堕棿" min-width="100px">   </el-table-column>
-                <el-table-column prop="delValidDays"  label="鎵瑰噺鐢熸晥鏃堕棿" min-width="100px">   </el-table-column>-->
-                <el-table-column label="鏂规璐圭敤" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span>{{row.price}}鍏�/浜�/</span>
-                        <span v-if="row.timeUnit === 0">澶�</span>
-<!--                        <span v-if="row.timeUnit === 1">鍗婃湀</span>-->
-                        <span v-if="row.timeUnit === 2">鏈�</span>
-                        <span v-if="row.timeUnit === 3">瀛e害</span>
-                        <span v-if="row.timeUnit === 4">鍗婂勾</span>
-                        <span v-if="row.timeUnit === 5">骞�</span>
-                    </template>
-                </el-table-column>
+                <el-table-column prop="name" label="瀛愭柟妗堝悕绉�" min-width="150px"></el-table-column>
+                <el-table-column prop="insuranceName" label="涓绘柟妗�" min-width="100px"></el-table-column>
                 <el-table-column label="鎶曚繚绫诲瀷" min-width="120px" align="center">
                     <template slot-scope="{row}">
                         <span v-if="row.type === 0">鐩翠繚</span>
                         <span v-if="row.type === 1">濮旀墭<div style="color: blue;display:  block" >{{row.shopName||'-'}}</div></span>
                     </template>
                 </el-table-column>
+                <el-table-column label="鎶曚繚浠锋牸" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span>{{row.price}}鍏�/浜�/</span>
+                        <span v-if="row.timeUnit === 0">澶�</span>
+                        <!--                        <span v-if="row.timeUnit === 1">鍗婃湀</span>-->
+                        <span v-if="row.timeUnit === 2">鏈�</span>
+                        <span v-if="row.timeUnit === 3">瀛e害</span>
+                        <span v-if="row.timeUnit === 4">鍗婂勾</span>
+                        <span v-if="row.timeUnit === 5">骞�</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="闇�瑕佸瀹�"></el-table-column>
+                <el-table-column prop="createDate" label="鏂规鍒涘缓鏃ユ湡" min-width="100px"></el-table-column>
                 <el-table-column prop="status" label="鍚敤鐘舵��" min-width="100px" v-if="userInfo.type !== 1">
                     <template slot-scope="{row}">
                         <el-switch
-                            @change="changeStatus($event, row)"
-                            v-model="row.status"
-                            active-color="#13ce66"
-                            inactive-color="#ff4949"
-                            :active-value="0"
-                            :inactive-value="1">
+                                @change="changeStatus($event, row)"
+                                v-model="row.status"
+                                active-color="#13ce66"
+                                inactive-color="#ff4949"
+                                :active-value="0"
+                                :inactive-value="1">
                         </el-switch>
                     </template>
                 </el-table-column>
-                <el-table-column prop="createDate" label="鏂规鏃ユ湡" min-width="100px"></el-table-column>
                 <el-table-column
                     v-if="containPermissions(['business:solutions:update', 'business:solutions:delete'])"
                     label="鎿嶄綔"
@@ -112,55 +88,55 @@
     </TableLayout>
 </template>
 <script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
-import OperaSolutionsDescWindow from '@/components/business/OperaSolutionsDescWindow'
-import { updateStatus } from '@/api/business/solutions'
-import { mapState } from 'vuex'
-export default {
-  name: 'Solutions',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaSolutionsWindow, OperaSolutionsDescWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        status: '',
-        type: ''
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
+  import OperaSolutionsDescWindow from '@/components/business/OperaSolutionsDescWindow'
+  import { updateStatus } from '@/api/business/solutions'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'Solutions',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaSolutionsWindow, OperaSolutionsDescWindow },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          name: '',
+          status: '',
+          type: ''
+        }
+      }
+    },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    created () {
+      this.config({
+        module: '淇濋櫓鏂规淇℃伅琛�',
+        api: '/business/solutions',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      if (this.userInfo.type === 1) {
+        this.searchForm.status = '0'
+      } else {
+        this.searchForm.status = ''
+      }
+      this.search()
+    },
+    methods: {
+      // 淇敼鐘舵��
+      changeStatus (status, row) {
+        updateStatus({ id: row.id, status })
+          .then(res => {
+            this.search()
+          })
+          .catch(err => {
+            row.status = row.status === 0 ? 1 : 0
+          })
       }
     }
-  },
-  computed: {
-    ...mapState(['userInfo'])
-  },
-  created () {
-    this.config({
-      module: '淇濋櫓鏂规淇℃伅琛�',
-      api: '/business/solutions',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    if (this.userInfo.type === 1) {
-      this.searchForm.status = '0'
-    } else {
-      this.searchForm.status = ''
-    }
-    this.search()
-  },
-  methods: {
-    // 淇敼鐘舵��
-    changeStatus (status, row) {
-      updateStatus({ id: row.id, status })
-        .then(res => {
-          this.search()
-        })
-        .catch(err => {
-          row.status = row.status === 0 ? 1 : 0
-        })
-    }
   }
-}
 </script>
diff --git a/company/src/views/business/solutionsBase.vue b/company/src/views/business/solutionsBase.vue
new file mode 100644
index 0000000..3055fed
--- /dev/null
+++ b/company/src/views/business/solutionsBase.vue
@@ -0,0 +1,134 @@
+<template>
+    <TableLayout :permissions="['business:solutions:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="淇濋櫓鏂规" prop="name">
+                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar" v-permissions="['business:solutions:create']">
+                <template v-if="userInfo.type !== 1">
+                    <li><el-button type="primary" @click="$refs.operaSolutionsBaseWindow.open('鏂板缓涓绘柟妗�')" v-permissions="['business:solutions:create']">娣诲姞鏂规</el-button></li>
+                </template>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="50px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="淇濋櫓鏂规" min-width="150px"></el-table-column>
+                <el-table-column prop="insuranceName" label="淇濋櫓鍏徃" min-width="100px"></el-table-column>
+                <el-table-column label="鎶曚繚骞撮緞" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span>{{row.minAge}}鑷硔{row.maxAge}}宀�</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="鎶曚繚鐢熸晥鏃ユ湡" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.validType === 0">{{row.validTypeNum}}鏃ュ悗鐢熸晥</span>
+                        <span v-if="row.validType === 1">娆℃湀鐢熸晥</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="createDate" label="鏂规鍒涘缓鏃ユ湡" min-width="100px"></el-table-column>
+                <el-table-column prop="status" label="鍚敤鐘舵��" min-width="100px" v-if="userInfo.type !== 1">
+                    <template slot-scope="{row}">
+                        <el-switch
+                            @change="changeStatus($event, row)"
+                            v-model="row.status"
+                            active-color="#13ce66"
+                            inactive-color="#ff4949"
+                            :active-value="0"
+                            :inactive-value="1">
+                        </el-switch>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    v-if="containPermissions(['business:solutions:update', 'business:solutions:delete'])"
+                    label="鎿嶄綔"
+                    min-width="180"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaSolutionsBaseDescWindow.open('鏂规璇︽儏', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">鏌ョ湅璇︽儏</el-button>
+                        <template v-if="userInfo.type !== 1">
+                            <el-button type="text" @click="$refs.operaSolutionsBaseWindow.open('缂栬緫涓绘柟妗�', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">淇敼</el-button>
+                        </template>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 淇敼 -->
+        <OperaSolutionsBaseWindow ref="operaSolutionsBaseWindow" @success="handlePageChange"/>
+        <!-- 璇︽儏 -->
+        <OperaSolutionsBaseDescWindow ref="operaSolutionsBaseDescWindow" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaSolutionsBaseWindow from '@/components/business/OperaSolutionsBaseWindow'
+  import OperaSolutionsBaseDescWindow from '@/components/business/OperaSolutionsBaseDescWindow'
+  import { updateStatus } from '@/api/business/solutionsBase'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'mainPlan',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaSolutionsBaseWindow, OperaSolutionsBaseDescWindow },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          name: ''
+        }
+      }
+    },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    created () {
+      this.config({
+        module: '涓绘柟妗堜俊鎭〃',
+        api: '/business/solutionsBase',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      if (this.userInfo.type === 1) {
+        this.searchForm.status = '0'
+      } else {
+        this.searchForm.status = ''
+      }
+      this.search()
+    },
+    methods: {
+      // 淇敼鐘舵��
+      changeStatus (status, row) {
+        updateStatus({ id: row.id, status })
+          .then(res => {
+            this.search()
+          })
+          .catch(err => {
+            row.status = row.status === 0 ? 1 : 0
+          })
+      }
+    }
+  }
+</script>
diff --git a/company/src/views/login.vue b/company/src/views/login.vue
index 9faf637..d777989 100644
--- a/company/src/views/login.vue
+++ b/company/src/views/login.vue
@@ -139,7 +139,7 @@
       if (this.loading) {
         return
       }
-      if (this.readed != 1) {
+      if (this.readed !== 1) {
         this.$message.error('璇峰厛闃呰鍜屽悓鎰忋�婃湇鍔″崗璁�嬪拰銆婇殣绉佸崗璁��')
         return
       }

--
Gitblit v1.9.3